4

我明白不可能beforeunload用自定义对话框替换对话框,如果我们需要为用户设置自定义消息,我们必须在 beforeunload 处理程序中返回一个字符串:

{Custom message here set by returning a string in our beforeunload handler}
Are you sure you want to leave this page?
[Leave this page] [Stay on this page]

那么,在浏览器显示实际的 beforeunload 对话框之前显示一个自定义模式对话框(可能是 jQuery)怎么样?

我当前的代码使用 Fancybox:

window.onbeforeunload = function() {
    $.fancybox({ 'type':'iframe', 'href':'/PopupOnExit.php' });
    return "Special offer! Stay on this page for more details.";
};

但是,这首先显示浏览器的对话框,并且只有在单击“停留”或“离开”按钮后,浏览器才会显示我的模式对话框。

有没有办法让我的模式对话框在浏览器对话框之前显示?

4

2 回答 2

3

DOM 修改仅在脚本结束执行时生效。在这种情况下,出于明显的安全原因,本机对话框首先被触发。

请注意,由于此未指定功能(请参阅MDN 文档)引入了许多安全问题,它可能会被删除(我认为最快的最好的),拥有它(保存数据)的旧理由在阿贾克斯时代。

于 2012-06-27T07:25:21.270 回答
0

unload 和 onBeforeUnload 不是跨浏览器事件。当心。它在 Opera 中不起作用,有时在 Chrome 中不起作用。

于 2012-06-27T07:27:45.083 回答