我在我的Web应用程序中使用jQuery Dirty Forms插件,如下所示:
$(document).ready(function(){
$('form.checkUnsavedData').dirtyForms();
});
$(window).on('beforeunload', function(){
if($.DirtyForms.isDirty()){
return($.DirtyForms.message);
}
});
但是,首次单击任何链接都不会触发onbeforeunload事件。只有下一次点击才会触发它。这个问题在不同的浏览器中(谷歌浏览器,火狐,ie10)。怎么了?
我相信你需要添加onBeforeUnload API,正如它在drupal Download & expand中所说的那样,否则你应该尽量不要通过jQuery绑定beforeunload
,而是使用普通的javascript来做,比如:window.beforeunload = function(){/*code*/};
。最后检查您使用的jQuery版本,哪些浏览器以及它们如何处理此事件。查看 Catch the Javascript beforeunload 事件,跨浏览器的方式有点过时,但它可能会帮助你。
怎么了?
脏窗体会自动附加到beforeunload
事件。你又在做一次。这可能会导致您的问题行为。您应该将代码更改为仅...
$(document).ready(function(){
$('form.checkUnsavedData').dirtyForms();
});