我无法在Chrome中触发卸载事件

这段代码在Firefox上运行良好, 但我不能让unload事件在Chrome上运行 。 Chrome是否停止支持卸载事件?

这是我的代码:

       function pageHidden(evt) { alert("Are you sure 1?"); } //WORKS ON FIREFOX BUT NOT IN CHROME window.addEventListener("pagehide", pageHidden, false); window.onunload = function () { alert("Are you sure 2?"); } //TRIGGERS ON LOAD NOT ON UNLOAD $(window).unload(function () { //WORKS ON FIREFOX BUT NOT IN CHROME alert("Are you sure 3?"); });    TEST WEBSITE external link   

如何让卸载事件在Chrome中运行?

谢谢!


解答:不要使用警报测试卸载事件;)

 window.onunload = alert("Are you sure 2?"); 

这是不正确的。 您正在设置onunloadalert的结果,您需要将其设置为一个函数:

 window.onunload = function(){ alert("Are you sure?"); } 

如果你想使用jQuery,这将适用于所有浏览器。

 $(window).unload(function () { alert("Are you sure?"); }); 

注意 :它似乎不适用于Chrome,但确实如此。 这是因为Chrome会在onunload事件中阻止alert

尝试:

 window.onbeforeunload = function () { // code }; 

要么

 window.onpagehide = function () { // code }; 

您不会触发任何内容 – 您只需执行要添加为处理程序的表达式:

 window.onunload = function(event) { alert("Are you sure 2?"); }; 

从我所看到的情况来看,一旦触发该事件,Chrome就会阻止警报。 但是,您可以运行某些function,而不是与用户交互的任何function。

来自Chrome中的window.onbeforeunload:最近的修复是什么? 看来,如果你想要做的就是弹出一条确认消息,你必须通过返回一个字符串来实现它,该字符串包含你设置为回调函数的消息。

 window.onbeforeunload = function() { // Some wrap up code (no alerts, confirms, redirects, etc) return 'My confirmation messsage'; } 

然后,“我的确认消息”文本将显示在Chrome选择的确认对话框中。 Firefox 在此处记录此行为。