Можем ли мы получить доступ к URL-адресу следующего запроса браузера в функции выгрузки преобладающей HTML-страницы - PullRequest
0 голосов
/ 13 января 2012

Поскольку HTML-код находится до тех пор, пока не поступит ответ на новый URL-запрос. Затем браузер вызывает функции BeforeUnload и Unload.

Это означает, что где-нибудь в браузере находится URL, который был загружен для выгрузки текущего. Так есть ли способ получить этот (новый) URL в функции Unload?

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

Ответы [ 3 ]

1 голос
/ 13 января 2012

Нет, это будет серьезная утечка безопасности.

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

1 голос
/ 13 января 2012

Нет - у вас нет доступа к этому. Что вы можете сделать - это перехватить событие click для всех элементов, которые заставят вас покинуть страницу, а затем сохранить их URL-адрес в глобальной переменной. Тогда вам будет доступно это значение "beforeunload".

Это, очевидно, будет работать только с элементами на вашей странице. Если пользователь вводит URL-адрес в адресную строку, вы ничего не можете сделать, чтобы зафиксировать это.

0 голосов
/ 13 января 2012

Сделайте глобальное значение JS что-то вроде var supressPopup = false;

Затем, сделайте так, чтобы все ваши внешние ссылки также включали метод, который устанавливает это логическое значение на true (то есть javascript:supressPopup=true;location.href='newurl.html' (Это уродливый способчтобы сделать это, но только в качестве примера - вы можете использовать скрипт, который сканирует все теги <a> страницы и добавляет событие onClick, если href не начинается с http)

Затемв коде unload проверьте supressPopup, если оно ложно, покажите всплывающее окно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...