我确实理解不可能用自定义对象替换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.";
};
但是,这首先显示浏览器的对话框,只有在单击“停留”或“离开”按钮后,浏览器才会显示我的模态对话框。
有没有办法让我的模态对话框显示在浏览器的对话框之前?
答案 0 :(得分:3)
DOM修改仅在脚本结束执行时生效。在这种情况下,出于明显的安全原因,首先触发本机对话框。
请注意,由于此未指定功能引入了许多安全问题(请参阅the MDN doc),因此可能会将其删除(我认为最快),旧的原因(保存数据) )在阿贾克斯时代已经过时了。
答案 1 :(得分:0)
unload和onBeforeUnload非常不是跨浏览器事件。小心。 它在Opera中无效,有时在Chrome中无法使用。