javascript - Chrome 和 Firefox 的 onbeforeunload 问题

标签 javascript google-chrome firefox alert confirmation

最近几天,我注意到我应该在离开我的网站页面之前看到的确认警报在 Chrome 和 Firefox 上不再显示,但在 IE 上显示。 如果我使用 Google Chrome Dev Tools 进行调试,我可以看到函数 confirm 被执行,进入 if 语句,但没有显示警告框。我尝试重新启动 Google Chrome 并寻找重置警报消息的选项,但我什么也没找到。 有什么想法吗?

代码是这样的:

if (window.addEventListener) {
                    window.addEventListener('beforeunload', confirm, false);
                }
                else window.attachEvent("onbeforeunload", confirm);

...

function confirm(e) {
    if (changed== true) {
        return "You haven't saved your changes!";
    }
}

最佳答案

我找到了一个可行的解决方案,但实际上我不明白为什么 attachEvent 不再起作用。无论如何,这是在 IE、Chrome 和 Firefox 上测试过的工作解决方案:

我删除了 addEventListener 和 attachEvent 行:

/* if (window.addEventListener) {
                    window.addEventListener('beforeunload', confirm, false);
                }
                else window.attachEvent("onbeforeunload", confirm); */

在 HTML 中,我将 onbeforeunload 属性添加到 body 标记中:

<body onbeforeunload="return confirmEvent()">

我还重命名了 onbeforeunload 函数以避免与 confirm 内置 javascript 函数混淆:

function confirmEvent(e) {
    if (changed== true) {
        return "You haven't saved your changes!";
    }
}

关于javascript - Chrome 和 Firefox 的 onbeforeunload 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23741675/

相关文章:

javascript - JavaScript 测试文件的约定是什么?

javascript - XUL 按钮没有出现

html - 在 Firefox 中,SPAN 元素不能动态添加到具有 -column-width 值的元素

html - 使用 -moz-transform 进行 CSS 转换

javascript - 如何判断弹出窗口是否会被阻止

javascript - 使用 JavaScript 定位时元素的位置不在预期位置

javascript - 当我对此进行更改时,我的 Discord.js 机器人没有响应,我还是新人,但我看不出出了什么问题

silverlight - 如何使用Chrome和中断点调试Silverlight应用程序?

javascript - HTML5 视频不会使用 Angular 在 Chrome 67 中自动播放(即使静音)

javascript - 如何将两个用户脚本合并为一个?