Я надеюсь, что это помогает кому-то еще там!

ли способ записать в результат диалоговое окно подтверждения window.onbeforeunload, подобное приведенному ниже из Переполнения стека (это происходит, когда вы покидаете страницу «Задать вопрос» без публикации вопроса)?

Вот как это выглядит в Chrome, я полагаю, что это немного отличается в других браузерах, но у вас всегда есть некоторая форма кнопок да / нет.

Предположительно, если они все еще находятся на странице обидчика после того, как событие было инициировано, они решили остаться, и вы, вероятно, могли бы выяснить это, наблюдая за последовательностью js. тем не мениеЯ хотел бы знать, как определить, нажали ли они "Покинуть эту страницу"?

Я реализовал это, как показано ниже:

// concept taken from SO implementation
function setConfirmUnload(showMessage, message) {
    window.onbeforeunload = showMessage ? (message ? message : "this is a default message") : null;
}

// pseudo code
listen to changes on inputs
if any inputs fire a change event
   call setConfirmUnload(true, 'My warning message')

нота Я использую JQuery на моем сайте.

По сути, я пытаюсь реализовать Gmail-подобную черновую реализацию, в которой, если пользователь оставляет страницу с формой, в которую он внес изменения без сохранения, он нагревается с помощью аналогичного диалога. Если они решат отменить изменения и покинуть страницу, мне нужно очистить некоторые временные записи из базы данных (я имею в виду вызов AJAX или просто отправив форму сdelete флаг) затем отправив их в путь.

Мой вопрос также касается:

jQuery AJAX вызывает обработчик onunload ПОСЛЕ ПОЛУЧЕНИЯ страницы при обновлении вручную. Как я могу гарантировать, что onunload произойдет первым?

Ответы на вопрос(3)

Ваш ответ на вопрос