2012-04-22 93 views
2

我已经创建了一个相当Ajax的沉重的Web应用程序,我使用的window.onbeforeunload事件来检测是否存在由用户未保存的更改,并防止她从导航离开页面。代码由我的init函数加载,并用于支持事件的所有浏览器。但是,onbeforeunload事件突然停止在所有浏览器上触发,原因不明。我使用jQuery 1.7.1,并且有很多事件附加到各种元素(通过委托或直接)。有没有人有线索可能是这里的问题?这是一个代码片段:window.onbeforeunload没有发射

$(document).ready(function() { 
    window.onbeforeunload = function(e) { 
    if($(window).data("confirm") > 0) 
     return "You have unsaved changes"; 
    else 
     return null; 
    }; 
}); 

p.s.即使我完全删除回调中的支票,并且总是返回一个字符串,每次都会提示一条消息,但它仍然不会触发。我已经检查过我的浏览器正在使用与绑定回调的简单页面的事件正常工作。

+1

有可能是错误的是别的地方,因为这样的代码片段看起来好像没什么问题。也许它是解雇,但没有展示对话? – 11684 2012-04-22 09:09:37

+0

控制台说什么? – 11684 2012-04-22 09:11:41

+0

至11684:事件绝对不是解雇,我试图打印出一些东西给控制台,我什么也没有得到。此外,我添加了一个断点并试图进行调试,但每当我离开页面时都不会暂停。这个问题是其他地方我猜,但我不会在整个页面的其他地方惹事件,除非其中一个库...嗯 – nvrs 2012-04-22 09:26:40

回答

2
<script> 
window.onbeforeunload = function (e) { 
    e = e || window.event; 

    // For IE and Firefox prior to version 4 
    if (e) { 
     e.returnValue = 'Any string'; 
    } 

    // For Safari 
    return 'Any string'; 
}; 
</script> 
+0

事件仍然不火,甚至我复制粘贴上面的代码我想强调,我已经显示的代码工作正常几个月,它突然莫名其妙地停止,对于所有浏览器 – nvrs 2012-04-22 09:28:38

+0

我已检查和验证此代码,它工作正常。在[小提琴](http://jsfiddle.net/gopi1410/b7MXZ/) – gopi1410 2012-04-22 09:31:03

+0

当然它确实一般,但它不为我,我已经建立了WEP的应用程序的工作。或许我应该改一下我的问题,有没有任何已知的理由吨会阻止window.onbeforeunload发射?正如我所说,它曾经为我工作就好,突然它停止(我在此期间添加了各种功能的应用程序) – nvrs 2012-04-22 09:34:56