Есть ли window.onbeforeunload()
огонь во всех браузерах? Мне нужна функция onbeforeunload, которая поддерживается хотя бы IE6 и FF3.6.
Для IE onbeforeunload()
представляется только поддерживаемый IE9
Есть ли window.onbeforeunload()
огонь во всех браузерах? Мне нужна функция onbeforeunload, которая поддерживается хотя бы IE6 и FF3.6.
Для IE onbeforeunload()
представляется только поддерживаемый IE9
Я нашел обходной путь для Firefox с функцией setTimeout
, потому что он не имеет того же поведения, что и другие веб-браузеры.
window.onbeforeunload = function (e) {
var message = "Are you sure ?";
var firefox = /Firefox[\/\s](\d+)/.test(navigator.userAgent);
if (firefox) {
//Add custom dialog
//Firefox does not accept window.showModalDialog(), window.alert(), window.confirm(), and window.prompt() furthermore
var dialog = document.createElement("div");
document.body.appendChild(dialog);
dialog.id = "dialog";
dialog.style.visibility = "hidden";
dialog.innerHTML = message;
var left = document.body.clientWidth / 2 - dialog.clientWidth / 2;
dialog.style.left = left + "px";
dialog.style.visibility = "visible";
var shadow = document.createElement("div");
document.body.appendChild(shadow);
shadow.id = "shadow";
//tip with setTimeout
setTimeout(function () {
document.body.removeChild(document.getElementById("dialog"));
document.body.removeChild(document.getElementById("shadow"));
}, 0);
}
return message;
}
GitHub: https://github.com/Aelios/crossbrowser-onbeforeunload
Нет, он не срабатывает во всех браузерах. Он не поддерживается в мобильных браузерах, например. Safari, Opera Mobile и мини, Dolphin. См. Есть ли альтернативный метод использования onbeforeunload в мобильном сафари?
Основываясь на решении Tushar Ahirrao, это работает кросс-браузер и триггеры один раз (работает в Firefox, Chrome, что угодно)
<html>
<head>
<script type="text/javascript">
var app = {};
app.unloaded = false;
app.unload = function() {
if (app.unloaded) return; else app.unloaded = true;
// your code here
return "YO";
};
</script>
</head>
<body onunload="return app.unload();" onbeforeunload="return app.unload();">
YO
</body>
</html>
Вставить выше шаблона в пустой файл, а затем отредактировать его
Это мое воспоминание о том, что IE был единственным браузером для реализации onbeforeunload
, но некоторые браузеры взяли на себя обязательство реализовать его.
Короче говоря, IE о единственном браузере (с очень конечными исключениями), вы найдете это событие последовательно.
Затем вы можете использовать оба типа:
<body onunload="functionName();" onbeforeunload='functionName();' >