Javascript Chrome和Firefox的onbeforeunload问题

Javascript Chrome和Firefox的onbeforeunload问题,javascript,google-chrome,firefox,alert,confirmation,Javascript,Google Chrome,Firefox,Alert,Confirmation,在过去的几天里,我注意到我在离开我的网页之前应该看到的确认警报不再显示在Chrome和Firefox上,而是显示在IE上。 如果我使用谷歌Chrome开发工具进行调试,我可以看到函数confirm被执行,输入If语句,但没有显示任何警报框。我试图重新启动谷歌浏览器,寻找一个选项来重置警报消息,但什么也没找到。 有什么想法吗 代码如下: if (window.addEventListener) { window.addEventListener('befor

在过去的几天里,我注意到我在离开我的网页之前应该看到的确认警报不再显示在Chrome和Firefox上,而是显示在IE上。 如果我使用谷歌Chrome开发工具进行调试,我可以看到函数confirm被执行,输入If语句,但没有显示任何警报框。我试图重新启动谷歌浏览器,寻找一个选项来重置警报消息,但什么也没找到。 有什么想法吗

代码如下:

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()">

在我测试的每个浏览器中工作;)


PS:我知道有点晚了

如果由于操作系统关闭而导致浏览器关闭,这能正常工作吗?
function confirmEvent(e) {
    if (changed== true) {
        return "You haven't saved your changes!";
    }
}
window.addEventListener("beforeunload", function (e) {
  var confirmationMessage = "\o/";

  e.returnValue = confirmationMessage;     // Gecko and Trident
  return confirmationMessage;              // Gecko and WebKit
});