|
|
|
|
|
для: Абырвалг
(11.04.2011 в 00:49)
| | Эту штуку смотрят только по таймеру. Каждый промежуток времени сравниваем текущий #hash с предыдущим. Если изменился - делаем что-то. Если нет - перезапускаем таймер. Ну или перезапускаем таймер в любом случае - в зависимости от обстоятельств.
Такую штуку делал на своем сайте. Можете посмотреть. | |
|
|
|
|
|
|
|
для: Абырвалг
(11.04.2011 в 00:49)
| | Почему вас не устраивает пользоваться setinterval? Других надежных решений отслеживания изменения location.hash нет. И это не будет тормозить браузер.
// default document.location.hash
t = 'текущее состояние адресной строки';
function wo()
{
h=document.location.hash;
g=h.replace(/\#/g,'');
f=g*1;
if(t!=f)
{
t=f;
// реакция на изменение location.hash
}else return false;
}setInterval(wo,666);
|
| |
|
|
|
|
|
|
|
для: deimand
(11.04.2011 в 00:20)
| | "если пользователь копирует адрес в соседний бразер и там открывает", то в "соседнем бразере" на странице срабатывает событие window.onload, кое легко отслеживается.
В том и фишка, что при первоначальной загрузке страницы (с hash или без оного) объект document.location.hash легко определяется по событию window.onload.
А вот когда пользователь вручную меняет этот самый hash, то window.onload не срабатывает, ибо документ в окне не перезагружается. | |
|
|
|
|
|
|
|
для: flaers
(10.04.2011 в 16:28)
| | А если пользователь копирует адрес в соседний бразер и там открывает? | |
|
|
|
|
|
|
|
для: flaers
(10.04.2011 в 16:28)
| | Какие именно "javascript обработчики"? | |
|
|
|
|
|
|
|
для: Абырвалг
(10.04.2011 в 11:01)
| | если пользователь нажимает 'enter' или 'перейти', следовательно он перезагружает страницу
ставим javascript обработчики и проверяем есть ли что-то | |
|
|
|
|
|
|
|
для: Абырвалг
(10.04.2011 в 11:01)
| | Если через event событие изменения location.hash нельзя отловить, то нет, только через setInterval. | |
|
|
|
|
|
|
| Положим, на странице имеются якоря (в виде ссылок или в виде id).
И, положим, юзер на уже открытой странице ВРУЧНУЮ дописывает в адресной строке к URL страницы символ # и что-то после него (тот самый location.hash) и ЖМЕТ на Enter (или на кнопку "Перейти" браузера).
Если написанное юзером совпадает с имеющимся на странице якорем, то происходит ПЕРЕХОД - тег с якорем(id) помещается в левый верхний угол окна (при необходимости происходит скролл страницы).
Если написанного юзером hash'a на странице нет (не существует), то ПЕРЕХОДА не происходит.
Вопрос: возможно ли программно (но БЕЗ использования setTimeout и БЕЗ использования setInterval) отследить попытку юзера (как удачную, так и неудачную) такого (РУЧНОГО) перехода по якорю(id)? | |
|
|
|
|