Оновлення (2017)
Сучасні веб-переглядачі вважають, що відображення користувальницького повідомлення є небезпекою для безпеки, тому його було видалено з усіх. Зараз у веб-переглядачах відображаються лише загальні повідомлення. Оскільки нам більше не потрібно турбуватися про налаштування повідомлення, це так просто, як:
// Enable navigation prompt
window.onbeforeunload = function() {
return true;
};
// Remove navigation prompt
window.onbeforeunload = null;
Прочитайте нижче про підтримку застарілого браузера.
Оновлення (2013 р.)
Первісна відповідь підходить для IE6-8 та FX1-3.5 (на що ми орієнтувались ще в 2009 році, коли це було написано), але зараз вона застаріла і не працює в більшості сучасних браузерів - я залишив це нижче для довідки.
Цей window.onbeforeunload
веб-переглядач не обробляється послідовно. Це має бути посиланням на функцію, а не рядком (як зазначено в оригінальній відповіді), але це буде працювати в старих браузерах, оскільки перевірка більшості з них, як видається, призначена чимось onbeforeunload
(включаючи функцію, яка повертається null
).
Ви встановлюєте window.onbeforeunload
посилання на функцію, але в старих браузерах ви повинні встановити returnValue
подію, а не просто повертати рядок:
var confirmOnPageExit = function (e)
{
// If we haven't been passed the event get the window.event
e = e || window.event;
var message = 'Any text will block the navigation and display a prompt';
// For IE6-8 and Firefox prior to version 4
if (e)
{
e.returnValue = message;
}
// For Chrome, Safari, IE8+ and Opera 12+
return message;
};
Ви не можете confirmOnPageExit
зробити це, щоб перевірити та повернути нуль, якщо ви бажаєте, щоб користувач продовжував без повідомлення. Потрібно видалити подію, щоб надійно включати та вимикати:
// Turn it on - assign the function that returns the string
window.onbeforeunload = confirmOnPageExit;
// Turn it off - remove the function entirely
window.onbeforeunload = null;
Оригінальна відповідь (працював у 2009 році)
Щоб увімкнути його:
window.onbeforeunload = "Are you sure you want to leave?";
Щоб вимкнути це:
window.onbeforeunload = null;
Майте на увазі, що це не нормальна подія - ви не можете зв'язати її стандартним чином.
Щоб перевірити значення? Це залежить від вашої системи перевірки.
У jQuery це може бути щось на зразок (дуже базовий приклад):
$('input').change(function() {
if( $(this).val() != "" )
window.onbeforeunload = "Are you sure you want to leave?";
});