Проблема перед загрузкой с Chrome и Firefox

В последние дни я заметил, что уведомление о подтверждении, которое я должен увидеть перед тем, как покинуть страницу своего веб-сайта, больше не отображается в Chrome и Firefox, а отображается в IE. Если я отлаживаюсь с помощью Google Chrome Dev Tools, я вижу, что выполняется функция подтверждения, вводится оператор if, но окно предупреждения не отображается. Я попытался перезапустить Google Chrome и найти вариант сброса предупреждающих сообщений, но ничего не нашел. Есть идеи?

Код такой:

if (window.addEventListener) {
                    window.addEventListener('beforeunload', confirm, false);
                }
                else window.attachEvent("onbeforeunload", confirm);

...

function confirm(e) {
    if (changed== true) {
        return "You haven't saved your changes!";
    }
}

2 ответа

Решение

Я нашел рабочее решение, но на самом деле я не понимаю, почему attachEvent больше не работает. В любом случае, это рабочее решение, протестированное на IE, Chrome и Firefox:

Я удалил строки addEventListener и attachEvent:

/* if (window.addEventListener) {
                    window.addEventListener('beforeunload', confirm, false);
                }
                else window.attachEvent("onbeforeunload", confirm); */

В HTML я добавляю атрибут onbeforeunload к тегу body:

<body onbeforeunload="return confirmEvent()">

Я также переименовал функцию onbeforeunload, чтобы избежать путаницы со встроенной функцией javascript для подтверждения:

function confirmEvent(e) {
    if (changed== true) {
        return "You haven't saved your changes!";
    }
}

См. https://developer.mozilla.org/en-US/docs/Web/Events/beforeunload

window.addEventListener("beforeunload", function (e) {
  var confirmationMessage = "\o/";

  e.returnValue = confirmationMessage;     // Gecko and Trident
  return confirmationMessage;              // Gecko and WebKit
});

Работал в каждом браузере, который я тестировал;)

PS: я знаю, что немного поздно

Другие вопросы по тегам