2013-01-07 4 views
0

On - window.location.hash - Change?Есть ли функция обратного вызова для внутренней страницы ссылки

сформулированный выше вопрос переговоров об изменении хэша в то время как этот вопрос говорит о обратном вызове, когда внутренняя ссылка щелкнули

У меня есть много ссылок на страницу, которая указывает на другой местоположение на той же странице, используя # ссылки. Всякий раз, когда я нажимаю одну из таких ссылок, страница прокручивается до этого места. Но мне нужно настроить свиток вручную после автоматического прокрутки. Итак, хотелось бы знать, есть ли какая-либо функция обратного вызова для таких событий?

Также событие должно стрелять, если # тег присутствует в начальной загрузке страницы (не только при щелчке со ссылкой) и когда же нажатии на ссылку снова (hashchange событие не срабатывает в этом случай)

+2

Имейте в виду, что если пользователь дважды щелкает ссылку на хэш, хеш не изменяется. – Cerbrus

+1

@Cerbrus Хорошая точка; это не совсем та же проблема, что и простое изменение хэша. – apsillers

+0

[Есть известный плагин для поддержки события hashchange] (http://benalman.com/projects/jquery-hashchange-plugin/). – zzzzBov

ответ

0

Вы можете зарегистрировать один с помощью этой функции на элементе:

addEventListener('click', function(){/*update your stuff here/*});

в JQuery, это еще проще

$('a').on('click', function(){/*update your stuff here/*}); будет обновляться после каждого нажатия ссылки.

0

Нет специального ответного вызова, о котором я знаю, но вы можете связать функцию с событием window.onscroll (https://developer.mozilla.org/en-US/docs/DOM/window.onscroll). Это обнаружит, когда окно прокручивается щелчками по ссылкам и позволит вам внести коррективы. Тогда только проблема в том, что он также срабатывает, когда пользователь прокручивает страницу в обычном режиме.

Помимо этого вы бы добавили класс во все ваши # ссылки, которые позволят вам определить, когда вы нажали. В jQuery:

$("a.HASH-LINK-CLASS").on("click", function (event) { ... }); 
+0

ваш ответ не поможет, если #tag присутствовал в самом начальном URL-странице страницы. – emaillenin

+0

Правда, в этом случае он может использовать тест на 'window.location.hash' – phonicx

Смежные вопросы