$(window).unload не стреляет
Я хочу выполнить метод действия, когда пользователь отказывается от конкретной страницы с помощью jQuery.
Страница имеет следующий код:
<script type="text/javascript">
$(window).unload(function () {
alert("Handler for .unload() was called.");
});
</script>
Когда я перехожу от страницы, я никогда не вижу ожидаемого предупреждения.
Ответы
Ответ 1
На самом деле некоторые браузеры, такие как Google Chrome, могут блокироваться, если вы попытаетесь alert
в окне unload
. Как пользователь мне нравится эта функция. Предупреждение каждый раз, когда вы пытаетесь перейти от страницы отстой:
![enter image description here]()
Замените оповещение на console.log
или что-то еще менее навязчивое для пользователя, и событие будет счастливо вызвано.
Вы также можете проверить событие onbeforeunload.
Ответ 2
jquery.on('unload',..); не была надежной работой для меня. я переключился на использование beforeunload. просто убедитесь, что вы ничего не возвращаете, или пользователь получит "вы уверены, что оставите страницу" -popup.
<script type='text/javascript'>
$(window).on('beforeunload', function(){
console.log("beforeUnload event!");
});
</script>
Ответ 3
как сказал белм
beforeunload
работает и для меня.
return false в этом случае вызовет браузер по умолчанию
Вы уверены, что хотите покинуть эту страницу?
$(window).on('beforeunload', function ()
{
return false;
});
Ответ 4
window.onbeforeunload=navigationError;
var dont_confirm_leave = 0; var leave_message = 'You sure you want to leave?';
function navigationError(e)
{
if(dont_confirm_leave!==1)
{
if(!e) e = window.event;
//e.cancelBubble is supported by IE - this will kill the bubbling process.
e.cancelBubble = true;
e.returnValue = leave_message;
//e.stopPropagation works in Firefox.
if (e.stopPropagation)
{
e.stopPropagation();
e.preventDefault();
}
//return works for Chrome and Safari
return leave_message;
}
}
Ответ 5
если вы хотите предупредить пользователя о том, что вы покидаете эту страницу, если это
/* $(window).unload(function()
{
//alert("you leaving this page");
console.log("you leaving this page");
}); */