Как получить доступ к событию JavaScript href, вызванному beforeunload

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

Таким образом, я выполнял бы разные действия в обработчике событий beforeunload в соответствии с тем, что было URL.

Например, «http:» или «https:» предупреждают пользователя о потере несохраненных изменений; 'Mailto:' или 'skype:' не предупреждают пользователя, потому что на самом деле страница не будет выгружена.

Я пытаюсь создать хорошее решение такой проблемы: mailto link (in chrome) запускает window.onbeforeunload – могу ли я предотвратить это?

  • Перезагрузите сайт, когда он достигнут через кнопку браузера Назад
  • Есть ли альтернативный метод использования onbeforeunload в мобильном сафари?
  • Как я могу переопределить диалог OnBeforeUnload и заменить его своим?
  • Onbeforeunload в Opera
  • Как удалить приглашение на событие разгрузки с помощью javascript
  • Выполнение скрипта php в javascript?
  • Есть ли способ использовать window.onbeforeunload для Mobile Safari для устройств iOS?
  • Как сделать запрос на разгрузку на основе браузера?
  • 2 Solutions collect form web for “Как получить доступ к событию JavaScript href, вызванному beforeunload”

    Я был готов сказать вам, что это невозможно, потому что событие onbeforeunload только сообщает, что оно было вызвано окном, когда вы проверяете event.target, event.originaltarget и т. Д. Если вы переопределите window.onclick, мы можем изменить это Метод регистрации последнего элемента на странице. Затем, предоставив код для window.onbeforeunload, мы можем указать новое поведение, которое будет проверять href элемента, который был нажат последним. Ура, пиво!

    Вот код, который даст вам именно ту информацию, которую вы хотите, хотя бы в чистом javascript и без трещин для добавления внутри ваших якорных тегов. Я также добавил в preventDefault (), в котором появится сообщение «Эта страница просит вас подтвердить, что вы хотите уйти – данные, которые вы ввели, могут не быть сохранены». Подтвердите. Надеюсь, это поможет – вы можете понять, что делать дальше.

    <!DOCTYPE html> <html lang="en"> <head> <title>12065389</title> <meta charset="utf-8"> <script type="text/javascript"> var last_clicked; window.onclick = function(e) { last_clicked = e.target; return true; } window.onbeforeunload = function(e) { var e = e || window.event; if (last_clicked.href) { alert(last_clicked.href); e.preventDefault(); } } </script> </head> <body> <a href="http://google.com">google</a> </body> </html> 

    Вероятно, я добавлю событие ко всем ссылкам на странице, а не к событию beforeunload.

    Что-то вроде:

     $("a").click(function(evt) { if($(this).attr('href').indexOf('http') == 0) { if(confirm("Are you sure?")) { //continue } else { evt.preventDefault(); } } } 
    JavaScript делает сайт умным, красочным и простым использованием.