Как получить URL-адрес назначения для события onbeforeunload?

Я искал часами, но я не мог найти решение для этого.

window.onbeforeunload = warn;

это не работает:

function warn (e) 
{ 
   var destination = e.href;
   alert(destination );
}

Итак, чтобы очистить вещи. Если пользователь нажимает на ссылку на самой странице, это легко, потому что вы можете добавить eventhandler ко всем ссылкам onclick event, но. Я хочу поймать адрес, который пользователь вводит в поле url браузера.

3 ответов


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


Если вы просто хотите увидеть, какая ссылка назначения, вы можете использовать:

document.activeElement.href 

но получить адресную строку назначения невозможно.

Я слышал о решениях, где они запускают событие, если мышь перемещается к адресной строке (чтобы предупредить пользователя о том, что есть незавершенные процессы, которые не были рассмотрены), но такого рода взлом я бы никогда не сделал.


ответ Kaze-интересный подход, но смотреть на фокус элемента, когда страница перемещается от, не очень надежно. Частично из-за задержки между щелчком ссылки и переходом от страницы (в течение которого пользователь может переместить фокус на какой-либо другой элемент, но также и потому, что ссылка может быть сфокусирована (например. с помощью клавиатуры или mousedown-без щелчка мыши), фактически не используется для перехода от страницы. Так что если вы сфокусировали ссылку, то закрыли окно, можно подумать, что ты следуешь по ссылке.

захват onclick для каждой ссылки на странице (плюс onsubmit на каждой форме) немного более надежен, но все еще может быть обманут из-за задержки. Например, вы нажимаете ссылку, но затем, прежде чем новая страница начнет загрузку, нажмите кнопку Назад (или нажмите Escape). Опять же, если вы закрываете окно, он думает, что вы следуете по ссылке.

Я хочу поймать адрес, который пользователь вводит в поле url браузер.

это никогда не произойдет. Это очевидная конфиденциальность нет-нет.