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відбудеться це через пару секунд.