如何在beforeunload显示自己之前显示模态对话框?

时间:2012-06-27 07:12:34

标签: javascript jquery javascript-events onbeforeunload

我确实理解不可能用自定义对象替换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.";
};

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

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

2 个答案:

答案 0 :(得分:3)

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

请注意,由于此未指定功能引入了许多安全问题(请参阅the MDN doc),因此可能会将其删除(我认为最快),旧的原因(保存数据) )在阿贾克斯时代已经过时了。

答案 1 :(得分:0)

unload和onBeforeUnload非常不是跨浏览器事件。小心。 它在Opera中无效,有时在Chrome中无法使用。