如何在beforeunload显示自己之前显示modal dialog?

我知道用自定义的beforeunload替换beforeunload对话框是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."; }; 

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

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

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

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

unload和onBeforeUnload非常不是跨浏览器事件。 小心。 它不适用于Opera,有时也适用于Chrome。