|
|
|
| Здравствуйте, уважаемые программисты.
На странице есть разного рода ссылки, к примеру:
<a href='http://ya.ru/'>link</a>
<span onclick="location.href('http://www.ya.ru')">link for yandex</span>
|
В JQueryj есть собитие unload, которое срабатывает при переходе уходе с текущего документа:
$(window).unload(function(){ ...... });
|
Где и как узнать адрес по которому переходит браузер? | |
|
|
|
|
|
|
|
для: Filatov_Aleksey
(06.03.2012 в 11:28)
| | Вы даже jQuery используете, так какие трудности назначить, а еще лучше делегировать обработку событий у span, таким образом зная кто источник щелчка, и соответственно адрес. И почему щелчок не на саму ссылку? | |
|
|
|
|
|
|
|
для: task
(06.03.2012 в 11:36)
| | Вы имели ввиду что то вроде этого:
$(document).ready(function(){
$('a').click(function(){
var link = $(this).attr('href');
});
});
|
такой вариант не подойдёт, т.к. изменение адреса не всегда происходит по кликам, может произойти к примеру по истечению таймера ну и т.д.
Единственное, что меня интересует, это как отловить адрес куда переходит браузер?
Не критикуйте меня, я не особо в js, только начинающий. | |
|
|
|
|
|
|
|
для: Filatov_Aleksey
(06.03.2012 в 12:49)
| | По новому адресу переходит браузер.
А событие onunload работает на текущей странице.
Браузер и страница в браузере - разные объекты.
Страница при обработке события onunload НЕ ИМЕЕТ информации о том, куда переходит браузер.
Поэтому и в ссылках, и в спанах, и в таймере необходимо эту информацию для страницы сохранить.
И об этом написано мною ранее ниже. | |
|
|
|
|
|
|
|
для: Filatov_Aleksey
(06.03.2012 в 11:28)
| | Немного теории.
Всякое событие - загрузка окна, клик, наведение мыши, уход со страницы и прочее-прочее... - оно имеет начало, конец и продолжается какое-то время. Обрабатывается это событие по состоянию ЗА доли секунды до завершения самого события. Соответственно, во время обработки этого события - по вашим инструкциям onload, onclick, onmouseover, onunload и прочее - МОЖНО узнать ВСЁ об этом событии. Например, при клике по ссылке инструкции по onclick в этой ссылке доступна ВСЯ информация об этой ссылке - все её параметры, все её атрибуты, все её свойства, включая HREF этой ссылки.
Но как только событие завершено - никакой более информации добыть НЕЛЬЗЯ.
Поэтому при обработке события onunload (за долю секунды перед окончательным уходом со страницы) страница не имеет информации о том, какая ссылка/кнопка/span... до этого была нажата.
Значит, надо, чтобы страница об этом уже знала ЗАРАНЕЕ.
Потому всё просто.
Вводите глобальную переменную var hul; (в переводе Href of UnLoad, но, разумеется, можете дать любое иное имя этой переменной).
И каждой ссылке (каждому span'у) прописываете:
<a href='http://ya.ru/' onclick="hul = this.href">link</a>
<span onclick="hul = location.href = 'http://www.ya.ru'">link for yandex</span>
|
Соответственно, ДО завершения события onunload странице будет известно - по какому адресу уходит браузер - alert (hul);
Если hul не будет иметь значения (undefined) - делаете вывод, что со страницы уходят каким-то иным способом (закрывают окно/вкладку, юзер пишет что-то в адресной строке, переходит по закладке из "Избранного"...) | |
|
|
|
|
|
|
|
для: ЯСА
(06.03.2012 в 12:37)
| | Благодарю за ответ. Пришёл к выводу, что перед выводом страницы, её нужно отпарсить, дописав в тексте где есть событие onclick , hul = .....старый текст.... и для ссылок (<a....) тоже дописать (добавит атрибут onclick="hul=this.href"). А в js написать:
<script>
var hul;
$(window).unload(function(){
if (hul!='undefined')
{
alert ('Пользователь, ты идёш по адресу'+hul);
}
});
</script>
|
| |
|
|
|
|
|
|
|
для: Filatov_Aleksey
(06.03.2012 в 16:14)
| | И зачем ради такой фичи unload, разве сообщение нельзя показать перед переходом? А вдруг пользователь ошибся, вдруг захочет отменить? | |
|
|
|