我写了这段代码
function winUnload() {
alert("Unload Window");
MyMethod();
}
window.onunload = function() { winUnload(); }
此代码在IE和Firefox中运行良好。但是此代码在Chrome中无效。语句alert("Unload Window");
和MyMethod();
都无效。
答案 0 :(得分:53)
在卸载事件中,有些操作在chrome中不起作用。提醒或确认框就是这样。
但是可能的(AFAIK):
#2的例子:
$(window).on('beforeunload', function() {
return 'Your own message goes here...';
});
答案 1 :(得分:6)
我知道这已经过时了,但我找到了使用Chrome进行卸载的方法
window.onbeforeunload = function () {
myFunction();
};
答案 2 :(得分:5)
Armin的答案非常有用,谢谢。 #2是尝试设置在大多数浏览器中工作的卸载事件时最重要的:你不能提醒()或确认(),但是返回一个字符串会产生一个确认模态。
但是我发现即使只是返回一个字符串,我也有一些特定于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的更高版本中修复了它。
答案 3 :(得分:3)
请尝试 window.onbeforeunload ,而不是 window.onunload 。 您也可以尝试从正文> 标记中调用 onbeforeunload ,这可能适用于Chrome。
但是,我们在Chrome浏览器中遇到卸载功能问题。 请检查
location.href does not work in chrome when called through the body/window unload event
谢谢, Nived
答案 4 :(得分:3)
您可以尝试对Chrome and Safari
使用Pagehide事件。
检查以下链接:
How to detect browser support for pageShow and pageHide?
http://www.webkit.org/blog/516/webkit-page-cache-ii-the-unload-event/
答案 5 :(得分:1)
如果onload事件未触发,则不会触发onunload事件。不幸的是,onload event waits for all binary content(例如图片)要加载,inline scripts run before onload事件会触发。当页面可见时,DOMContentLoaded会在onload执行之前触发。它现在是standard in HTML 5,您可以test for browser support但请注意这需要<!DOCTYPE html>
(至少在Chrome中)。但是,我找不到卸载DOM的相应事件。这样一个假设的事件可能不起作用,因为某些浏览器可能会保留DOM以执行“恢复选项卡”功能。
我到目前为止找到的唯一可能的解决方案是Page Visibility API,它似乎需要<!DOCTYPE html>
。
答案 6 :(得分:1)
这有效:
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);