1

Я использую JQuery Грязные формы плагин в моем веб-приложение, как это:window.onbeforeunload не срабатывает сразу

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

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

Но первый щелчок по любой ссылке не вызывает onbeforeunload событие. Только следующие клики запускают его. Эта проблема сохраняется в разных браузерах (google chrome, firefox, ie10). Что случилось?

ответ

1

Я считаю, что вам нужно будет добавить onBeforeUnload API Как говорится в drupal Download & extend или иначе, вы должны стараться не связывать beforeunload через JQuery и сделать это с обычным JavaScript, как: window.beforeunload = function(){/*code*/};. Наконец, проверьте, какую версию jQuery вы используете, какие браузеры и как они обрабатывают это событие. Отъезд Catching the Javascript beforeunload event, the cross-browser way немного устарел, но это может вам помочь.

0

Что случилось?

Dirty Forms автоматически присоединяется к событию beforeunload. Вы делаете это снова. Вероятно, это вызывает ваше проблемное поведение. Вы должны изменить свой код только ...

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