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