beforeunload
Событие срабатывает всякий раз , когда пользователь покидает страницу какой - либо причине.
Например, он будет запущен, если пользователь отправит форму, щелкнет ссылку, закроет окно (или вкладку) или перейдет на новую страницу с помощью адресной строки, поля поиска или закладки.
Вы можете исключить отправку формы и гиперссылки (кроме других фреймов) с помощью следующего кода:
var inFormOrLink;
$('a').on('click', function() { inFormOrLink = true; });
$('form').on('submit', function() { inFormOrLink = true; });
$(window).on("beforeunload", function() {
return inFormOrLink ? "Do you really want to close?" : null;
})
Для версий jQuery старше 1.7 попробуйте это:
var inFormOrLink;
$('a').live('click', function() { inFormOrLink = true; });
$('form').bind('submit', function() { inFormOrLink = true; });
$(window).bind("beforeunload", function() {
return inFormOrLink ? "Do you really want to close?" : null;
})
live
Метод не работает с submit
событием, так что если вы добавляете новую форму, вам нужно связать обработчик к нему , а также.
Обратите внимание, что если другой обработчик события отменяет отправку или навигацию, вы потеряете запрос на подтверждение, если окно фактически закроется позже. Вы можете исправить это путем записи времени в submit
и click
событиях, а также проверок , если beforeunload
происходит больше , чем на пару секунд позже.