Проблема перед загрузкой с 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: я знаю, что немного поздно