Вопрос по onunload, url, javascript-events, javascript – Как я могу получить целевой URL для события onbeforeunload?

46

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

window.onbeforeunload = warn;

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

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

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

Я работаю на сайтах обработки данных и перед тем, как пользователь покидает страницу, я проверяю, что все данные соответствуют требованиям. Событие onbeforeunload полезно, но громоздко из-за того, как его обрабатывают браузеры. Я могу'Не позволяйте пользователю покинуть страницу, но было бы неплохо узнать, куда он направляется. Как это происходит, в моем случае, я знаю, потому что это перенаправление сайта, поэтому я могу установить переменную сеанса. user913227

Ваш Ответ

3   ответа
61

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

@MichelvanEngelen - возможно, вы захотите вызвать экран загрузки CSS, чтобы пользователь знал, что он 'готовится куда-то перейти, что они действительно нажали на ссылку, и что-то происходит (заставляет сайт чувствовать себя более отзывчивым, особенно когда требуется переход на другую страницу) jbyrd
Я думаю, что вы неправильно поняли вопрос, зачем использовать onbeforeonload, если вы заходите на страницу на своем сайте? Это бессмысленно. Мисньо, вы можете уточнить, что именно вы хотите? Michel van Engelen
@MichelvanEngelen - это 'Это интересное соображение. На самом деле, кто-то из моей команды изначально предлагал такое поведение, а не я. Я был немного осторожен, когда он впервые предложил это, тем более что я не имелЯ действительно видел это раньше. Но остальной команде это понравилось, и я не смогЯ не думаю о серьезной проблеме с этим, поэтому мы пошли с этим. jbyrd
@jbyrd, возможно! Однако я считаю, что загрузчики принадлежат странице назначения, а не той странице, с которой мы перемещаемся. Предоставляет вам больше контроля, и в настоящее время мы часто просто представляем оболочки и загружаем данные через запросы AJAX и тому подобное. Michel van Engelen
18

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

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

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

Этого никогда не случится. Это очевидная конфиденциальность нет-нет.

Хе-хе, @ Кто-то, да: "Если ваш ответ не совсем правильный, нене волнуйтесь, у людей есть шанс судить об этом с помощью своего голоса ". Веселый! ...: D Sz.
Но ПОЧЕМУ ты это сделал? Если ваш ответ не совсем правильный, неНе волнуйтесь, у людей есть шанс судить об этом с помощью своего голоса. Но это все еще может быть полезным для других людей. Я бы хотел увидеть твоипоследний фокус " подход. cprcrack
Вы'Верно, я удалил свой ответ. Kaze no Koe
Договорились - @KazenoKoe, пожалуйста, добавьте свой ответ обратно! Shane N
О, давай, ты можешьНе ожидайте, что люди будут рассматривать отрицательное голосование как нейтральную рецензию, когда вы строите вокруг себя все это. Они намеренно пытаются связать это с поиском работы и т. Д. Каждый делает ошибки, но если вообще, вына самом деле просто поместите ваши самые впечатляющие в свое резюме. ;-) Someone
19

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

document.activeElement.href 

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

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

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