1

我在我的网络应用程序中使用了一个 jQuery Dirty Forms 插件,如下所示:

$(document).ready(function(){
 $('form.checkUnsavedData').dirtyForms();           
});

$(window).on('beforeunload', function(){    
    if($.DirtyForms.isDirty()){             
        return($.DirtyForms.message);                               
    }           
});

但是第一次点击任何链接都不会触发 onbeforeunload 事件。只有下一次点击才会触发它。这个问题在不同的浏览器(google chrome、firefox、ie10)中存在。怎么了?

4

2 回答 2

1

我相信你需要添加onBeforeUnload API正如它在drupal下载和扩展中所说的那样,否则你应该尽量不要beforeunload通过jQuery绑定并使用普通的javascript来做到这一点:window.beforeunload = function(){/*code*/};。最后检查您使用的 jQuery 版本、浏览器以及它们如何处理此事件。查看Catching the Javascript beforeunload 事件,这是一种跨浏览器的方式,它有点过时了,但它可能会对您有所帮助。

于 2013-09-05T16:44:07.233 回答
0

怎么了?

脏表单自动附加到beforeunload事件。你又这样做。这可能会导致您有问题的行为。您应该将代码更改为...

$(document).ready(function(){
  $('form.checkUnsavedData').dirtyForms();           
});
于 2016-02-21T12:27:33.717 回答