Подтверждение перед закрытием вкладки/браузера
Как запросить подтверждение у пользователя до того, как он покинет страницу, как в gmail?
Я искал этот вопрос в разных местах, но все, о чем они упоминают, это использование javascript window.unload и window.onbeforeunload. Кроме того, он не работает в большинстве случаев, когда он блокируется.
Ответы
Ответ 1
Попробуйте следующее:
<script>
window.onbeforeunload = function (e) {
e = e || window.event;
// For IE and Firefox prior to version 4
if (e) {
e.returnValue = 'Sure?';
}
// For Safari
return 'Sure?';
};
</script>
Вот рабочий jsFiddle
Ответ 2
Попробуйте следующее:
<script>
window.onbeforeunload = function(e) {
return 'Dialog text here.';
};
</script>
подробнее здесь MDN.
Ответ 3
Я прочитал комментарии к набору ответов как Хорошо. Большая часть пользователей спрашивает, что кнопка и некоторые ссылки должны быть разрешены. Здесь добавляется еще одна строка к существующему коду, который будет работать.
<script type="text/javascript">
var hook = true;
window.onbeforeunload = function() {
if (hook) {
return "Did you save your stuff?"
}
}
function unhook() {
hook=false;
}
Call unhook() onClick для кнопки и ссылок, которые вы хотите разрешить. Например.
<a href="#" onClick="unhook()">This link will allow navigation</a>
Ответ 4
Просто
function goodbye(e) {
if(!e) e = window.event;
//e.cancelBubble is supported by IE - this will kill the bubbling process.
e.cancelBubble = true;
e.returnValue = 'You sure you want to leave?'; //This is displayed on the dialog
//e.stopPropagation works in Firefox.
if (e.stopPropagation) {
e.stopPropagation();
e.preventDefault();
}
}
window.onbeforeunload=goodbye;
Ответ 5
Если вы хотите спросить на основании условия:
var ask = true
window.onbeforeunload = function (e) {
if(!ask) return null
e = e || window.event;
//old browsers
if (e) {e.returnValue = 'Sure?';}
//safari, chrome(chrome ignores text)
return 'Sure?';
};
Ответ 6
бросьте это в свой javascript, где вы хотите, чтобы он появился
window.onbeforeunload = "Are you sure you want to leave?";