我写了这段代码
function winUnload() {
alert("Unload Window");
MyMethod();
}
window.onunload = function() { winUnload(); }
此代码在 IE 和 Firefox 中运行良好。但是这段代码在 Chrome 中不起作用。这两个陈述alert("Unload Window");
都MyMethod();
不起作用。
我写了这段代码
function winUnload() {
alert("Unload Window");
MyMethod();
}
window.onunload = function() { winUnload(); }
此代码在 IE 和 Firefox 中运行良好。但是这段代码在 Chrome 中不起作用。这两个陈述alert("Unload Window");
都MyMethod();
不起作用。
在卸载事件中,有些操作在 chrome 中不起作用。警报或确认框就是这样的东西。
但是有什么可能(AFAIK):
#2 的示例:
$(window).on('beforeunload', function() {
return 'Your own message goes here...';
});
演示:http: //jsfiddle.net/PQz5k/
我知道这很旧,但我找到了使用 Chrome 进行卸载工作的方法
window.onbeforeunload = function () {
myFunction();
};
阿明的回答非常有用,谢谢。#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 中得到修复。
请尝试window.onbeforeunload
使用window.onunload
chrome。您也可以尝试onbeforeunload
从body>
可能在 chrome 中工作的标签调用。
但是,我们在 chrome 浏览器中的卸载功能确实存在问题。请检查
您可以尝试将 pagehide 事件用于Chrome and Safari
.
检查这些链接:
如何检测浏览器对 pageShow 和 pageHide 的支持?
http://www.webkit.org/blog/516/webkit-page-cache-ii-the-unload-event/
如果未触发 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);