在Chrome浏览器中,window.onunload无法正常工作。 任何人都可以帮助我吗?

我已经写了这个代码

function winUnload() { alert("Unload Window"); MyMethod(); } window.onunload = function() { winUnload(); } 

此代码在IE和Firefox中正常工作。 但是这个代码在Chrome中不起作用。 这两个语句alert("Unload Window");MyMethod(); 不工作。

在卸载事件中有一些行为在chrome中不起作用。 警报或确认框是这样的事情。

但什么是可能的(AFAIK):

  1. 打开popup窗口(使用window.open) – 但这只会工作,如果popup窗口阻止程序被禁用您的网站
  2. 返回一个简单的string(在beforeunload事件中),这会触发一个确认框,询问用户是否要离开页面。

#2示例:

 $(window).on('beforeunload', function() { return 'Your own message goes here...'; }); 

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

我知道这是旧的,但我find了使用Chrome卸载工作的方式

 window.onbeforeunload = function () { myFunction(); }; 

阿明的回答非常有用,谢谢。 当尝试设置在大多数浏览器中工作的卸载事件时,#2是最重要的知识:不能alert()或confirm(),但返回一个string将生成一个确认模式。

但是,我发现,即使只是返回一个string,我也有一些特定于Mootools的跨浏览器问题(在这个例子中使用版本1.4.5)。 这个Mootools特定的实现在Firefox中运行的很好,但没有导致在Chrome或Safari中确认popup窗口:

 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的铬。 你也可以尝试从body>标签中调用onbeforeunload ,这个标签可以在chrome中工作。

但是,我们在chrome浏览器中的卸载function确实有问题。 请检查

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

谢谢,Nived

您可以尝试使用Chrome and Safari页面隐藏事件。

检查这些链接:

如何检测浏览器对pageShow和pageHide的支持?

http://www.webkit.org/blog/516/webkit-page-cache-ii-the-unload-event/

如果onload事件没有触发,onunload事件将不会触发。 不幸的是, onload事件等待所有的二进制内容 (例如图像)加载,而内联脚本在 onload事件触发之前运行 。 在onload执行之前,当页面可见时触发DOMContentLoaded 。 它现在是HTML 5中的标准 ,您可以testing浏览器支持,但注意这需要<!DOCTYPE html> (至less在Chrome中)。 但是,我找不到卸载DOM的相应事件。 而这样的假设事件可能无法正常工作,因为一些浏览器可能会保持DOM执行“恢复标签”function。

我发现的唯一可能的解决scheme是页面可见性API ,它似乎需要<!DOCTYPE html>

你的代码在这里亲爱的

 <script> 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); </script> 

感谢和欢呼