我写了这段代码
function winUnload() {
alert("Unload Window");
MyMethod();
}
window.onunload = function() { winUnload(); }
此代码在 IE 和 Firefox 中运行良好。但这段代码在 Chrome 中不起作用。声明
alert("Unload Window");
和 MyMethod();
都不起作用。
在卸载事件内部,有些操作在 Chrome 中不起作用。警报或确认框就是这样的东西。
但是什么是可能的(据我所知):
#2 的示例:
$(window).on('beforeunload', function() {
return 'Your own message goes here...';
});
我知道这已经很旧了,但我找到了使用 Chrome 进行卸载工作的方法
window.onbeforeunload = function () {
myFunction();
};
Armin 的回答非常有用,谢谢。 #2 是在尝试设置适用于大多数浏览器的卸载事件时最重要的是要了解的内容:您不能使用alert() 或confirm(),但返回字符串将生成确认模式。
但我发现即使只返回一个字符串,我也会遇到一些特定于 Mootools 的跨浏览器问题(在本例中使用版本 1.4.5)。这种 Mootools 特定的实现在 Firefox 中效果很好,但在 Chrome 或 Safari 中没有导致确认弹出窗口:
window.addEvent("beforeunload", function() {
return "Are you sure you want to leave this page?";
});
因此,为了让我的 onbeforeonload 事件能够跨浏览器工作,我必须使用 JavaScript 本机调用:
window.onbeforeunload = function() {
return "Are you sure you want to leave this page?";
}
不确定为什么会出现这种情况,或者是否已在更高版本的 Mootools 中修复。
您可以尝试使用页面隐藏事件
Chrome and Safari
。
检查这些链接:
http://www.webkit.org/blog/516/webkit-page-cache-ii-the-unload-event/
对于 chrome,请尝试使用
window.onbeforeunload
代替 window.onunload
。
您还可以尝试从 onbeforeunload
标签调用 body>
,这可能适用于 chrome。
但是,Chrome 浏览器中的卸载功能确实存在问题。 请检查
当通过 body/window 卸载事件调用时,如果 onload 事件没有触发,onunload 事件也不会触发。不幸的是,onload 事件等待所有二进制内容(例如图像)加载,并且内联脚本在 onload 事件触发之前运行。 DOMContentLoaded 在页面可见时触发,在 onload 之前触发。现在它是 HTML 5 中的标准,您可以测试浏览器支持,但请注意,这需要 <!DOCTYPE html>
(至少在 Chrome 中)。但是,我找不到相应的卸载 DOM 的事件。这样的假设事件可能不起作用,因为某些浏览器可能会保留 DOM 来执行“恢复选项卡”功能。到目前为止,我发现的唯一潜在解决方案是
Page Visibility API,它似乎需要 <!DOCTYPE html>
。
var unloadEvent = function (e) {
var confirmationMessage = "Warning: Leaving this page will result in any unsaved data being lost. Are you sure you wish to continue?";
(e || window.event).returnValue = confirmationMessage; //Gecko + IE
return confirmationMessage; //Webkit, Safari, Chrome etc.
};
window.addEventListener("beforeunload", unloadEvent);