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

标签 javascript jquery dom-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.";
};

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

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

最佳答案

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

请注意,由于这个未指定的功能(请参阅 the MDN doc)引入了许多安全问题,它可能会被删除(我认为最快最好),拥有它(保存数据)的旧原因是在 ajax 时代已经过时了。

关于javascript - 如何在 beforeunload 显示它自己之前显示模态对话框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11221121/

相关文章:

javascript - 显示模态时隐藏切换导航

php - 有没有办法让 PHP(或 jQuery)检查字符串是否可读?

javascript - 在用户离开或关闭页面之前保存 HTML5 视频 currentTime

javascript - 如何通过 JS 代码连接 JS 事件处理程序

jquery - 在鼠标悬停在位于该 div 中心的图像上时展开 div

javascript - 即使事件已传递给调度程序,Reducer 仍显示未定义

javascript - 简单的 Javascript onclick 图片库不起作用

javascript - 如何将变量插入jquery select属性 $ ("[myAttribute=' +myAttribute +']").html ('is working' );

javascript - 在 Node 4.3 中使用 Buffer.from 时,TypeError Base64 不是一个函数

javascript - 如果未嵌套在另一个函数中,函数将无法正常工作