Можно ли программно вызвать событие onbeforeunload?

В настоящее время я использую плагин jquery-form-наблюдайте , который использует onbeforeunload, чтобы подсказать пользователю о " несохраненные "изменения.

Но у меня есть сценарий, в котором мне нужно вызвать это нажатием кнопки: нажатие кнопки в конечном итоге приводит к изменению страницы, но я хочу, чтобы пользователь перед тем, как он запустил процесс, нажал кнопку ...

Так есть ли способ вызвать onbeforeunload через jQuery или иным образом?

15
задан Brian Tompsett - 汤莱恩 15 June 2019 в 08:03
поделиться

2 ответа

Я не знаю, есть ли прямой способ сделать это, но вы всегда можете сами эмулировать окно подтверждения браузера. Вот простая функция, которую я приготовил на основе спецификаций в 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 был заменен обработчиком .

3
ответ дан 1 December 2019 в 05:19
поделиться

Это можно сделать с помощью метода .trigger () :

$('button').click(function(){
    $(window).trigger('beforeunload');
});
2
ответ дан 1 December 2019 в 05:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: