window.onbeforeunload не работает с Chrome при закрытии окна браузера - PullRequest
0 голосов
/ 01 декабря 2018

Я знаю, что здесь уже есть много похожих тем, но я не могу найти правильный ответ на мою проблему.

У меня есть следующие требования бизнеса для моего приложения MVC:

  1. Если определенная задача не выполнена, выведите всплывающее окно с предупреждением / подтверждением, когда пользователь пытается закрыть окно браузера или покинуть сайт, но разрешить навигацию по сайту.

  2. Если страница изменена и не сохранена, выдайте предупреждение / подтвердите, когда пользователь пытается закрыть окно браузера или уходит со страницы.Совершенно нормально.

Мой следующий код полностью работает с IE.В Google Chrome (GC) 2-е требование работает нормально, но 1-е требование не работает при закрытии окна браузера GC с незавершенной задачей.Событие не сработало, и предупреждение не появляется.Однако, если я открою инструмент F12, он будет работать с правильными значениями переменных.И, если я сначала попытаюсь отойти и выбрать STAY, когда появится всплывающее предупреждение, а затем закрыть окно браузера, оно также будет работать с всплывающим предупреждением.

Любая идея высоко ценится.

window.onbeforeunload = confirmExit;

function confirmExit() {
    if (!isTaskComplete && !isValidNavigation) //1st requirement
        return "Incomplete task alert.";

    if (isPageChanged && !isSubmit) //2nd requirement
        return "Unsaved change alert";

    return undefined;
}

$('.navigation, .submit').click(function () {
    isValidNavigation = true;
});
...