window.onunload在Chrome浏览器中无法正常运行.谁能帮我?

Imr*_*ran 31 javascript browser onunload window.onunload

我写了这段代码

function winUnload() {
    alert("Unload Window");
    MyMethod();
}

window.onunload = function() { winUnload(); }
Run Code Online (Sandbox Code Playgroud)

此代码在IE和Firefox中运行良好.但是此代码在Chrome中无效.双方的陈述alert("Unload Window");MyMethod();不工作.

Arm*_*min 54

在卸载事件中,有些操作在chrome中不起作用.警报或确认框就是这样的东西.

但有可能(AFAIK):

  1. 打开弹出窗口(使用window.open) - 但如果为您的站点禁用弹出窗口阻止程序,这将起作用
  2. 返回一个简单的字符串(在beforeunload事件中),触发一个确认框,询问用户他/她是否要离开页面.

#2的示例:

$(window).on('beforeunload', function() {
    return 'Your own message goes here...';
});
Run Code Online (Sandbox Code Playgroud)

演示:http://jsfiddle.net/PQz5k/

  • 在最新的 Chrome 中,我已经认识到该消息不再是个人的。它说“页面上有未保存的更改,您真的要离开吗?”。我收到了德语的消息,所以我随意翻译了它^^ (2认同)

Car*_*los 6

我知道这已经过时了,但我找到了使用Chrome进行卸载工作的方法

window.onbeforeunload = function () {
  myFunction();
};
Run Code Online (Sandbox Code Playgroud)

  • myFunction() - 将被调用2次!更好的只有onbeforeunload:```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?";
});
Run Code Online (Sandbox Code Playgroud)

因此,为了使我的onbeforeonload事件能够跨浏览器工作,我不得不使用JavaScript本机调用:

window.onbeforeunload = function() {
    return "Are you sure you want to leave this page?";
}
Run Code Online (Sandbox Code Playgroud)

不确定为什么会这样,或者在Mootools的更高版本中修复了它.


小智 3

请尝试window.onbeforeunload使用window.onunloadchrome。您还可以尝试onbeforeunloadbody>可能在 Chrome 中工作的标签进行调用。

但是,我们在 Chrome 浏览器中的卸载功能确实遇到了问题。请检查

通过 body/window 卸载事件调用时,location.href 在 chrome 中不起作用