В настоящее время я использую плагин jquery-form-наблюдайте , который использует onbeforeunload, чтобы подсказать пользователю о " несохраненные "изменения.
Но у меня есть сценарий, в котором мне нужно вызвать это нажатием кнопки: нажатие кнопки в конечном итоге приводит к изменению страницы, но я хочу, чтобы пользователь перед тем, как он запустил процесс, нажал кнопку ...
Так есть ли способ вызвать onbeforeunload через jQuery или иным образом?
Я не знаю, есть ли прямой способ сделать это, но вы всегда можете сами эмулировать окно подтверждения браузера. Вот простая функция, которую я приготовил на основе спецификаций в MSDN :
function triggerBeforeUnload() {
var event = {};
handler(event);
if (typeof event.returnValue == 'undefined' ||
confirm('Are you sure you want to navigate away from this page?\n\n' + event.returnValue + '\n\nPress OK to continue, or Cancel to stay on the current page.')) {
// Continue with page unload
} else {
// Cancel page unload
}
}
Изменить: В jquery.formobserver.js
, сразу после определения функции beforeunload (e) {...}
, добавьте эту строку:
handler = beforeunload;
Обратите внимание на изменение исходного кода: window.onbeforeunload
был заменен обработчиком
.
Это можно сделать с помощью метода .trigger () :
$('button').click(function(){
$(window).trigger('beforeunload');
});