2015-01-01 2 views
0

У меня есть две функции в моем JQuery, которые действуют на пользователя, покидающего страницу. Идея в том, что если пользователь покидает страницу, закрыв браузер, мы используем:Как остановить событие window.unload

$(window).bind('beforeunload', function() { 
    return "Are you sure you want to leave this page without saving or submitting?"; 
}); 

Теперь мы хотим спросить у пользователя, если они хотели бы сохранить свой прогресс, только если они выйти из страницы, с помощью:

$("#logoutButton").click(function(e) { 
    var result = confirm("Would you like to save before logging out?"); 

    if(result == true) { 
    $("#savebutton").click(); //simulate a click on save before redirecting 
    } 

    window.location.href = "www.redirectPage.com"; //go to logout page regardless of choice 
}); 

Теперь проблема, что я обращенную, является то, что всякий раз, когда пользователь нажимает кнопку выхода из системы, он выполняет сохранение проверить правильно, но он по-прежнему запрашивает у пользователя, если они хотят, чтобы оставить страницу, используя beforeunload метод. Есть ли способ остановить beforeunload от запуска в этом случае изнутри logoutbutton click функция?

+3

Просто отвязать обработчик события (с '$ (окно) .unbind ('beforeunload')') перед изменением ' location.href'. – raina77ow

ответ

1

Вы можете использовать .unbind(), чтобы удалить все обработчики событий для данного события. В коде, который был бы

$(window).unbind('beforeunload'); 

Позвоните сразу после сохранения:

$("#logoutButton").click(function(e) { 
    var result = confirm("Would you like to save before logging out?"); 

    if(result == true) { 
     $("#savebutton").click(); //simulate a click on save before redirecting 
     $(window).unbind('beforeunload'); 
    } 

    window.location.href = "www.redirectPage.com"; //go to logout page regardless of choice 
}); 
Смежные вопросы