window.onbeforeunload不会立即触发

时间:2013-09-05 15:17:42

标签: javascript jquery jquery-plugins onbeforeunload jquery-dirtyforms

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

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

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

但首先点击任何链接都不会触发onb​​eforeunload事件。只有下一次点击才能触发它。此问题保留在不同的浏览器中(谷歌浏览器,Firefox,ie10)。怎么了?

2 个答案:

答案 0 :(得分:1)

我相信您需要添加onBeforeUnload API正如drupal Download & extend中所说的那样,否则您应该尝试不通过jQuery绑定beforeunload并使用普通的javascript来执行此操作: window.beforeunload = function(){/*code*/};。最后检查一下您使用的jQuery版本,浏览器以及它们如何处理此事件。查看Catching the Javascript beforeunload event, the cross-browser way它有点过时,但它可能对您有帮助。

答案 1 :(得分:0)

  

什么事?

Dirty Forms会自动附加到beforeunload事件。你正在再次。这可能会导致您的问题行为。您应该将代码更改为......

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