Как обнаружить изменение хеша окна? - PullRequest
4 голосов
/ 21 января 2011

Как вы можете обнаружить window.location.hash onchange, например, я мог бы сделать это:

if(window.location.hash.hasChanged())
{
   // ajax stuff
}
else
{
   // nothing, no hash has been changed (without any window reload)
}

Если я изменю хеш, например редактирует и изменяет хеш, нажимая ввод после редактирования ничего не происходит, только при перезагрузке окна обнаружит изменение в хэше.

Ответы [ 2 ]

13 голосов
/ 21 января 2011

Самые последние браузеры (FF3.6 +, IE8, Chrome) поддерживают событие hashchange для объекта window - см. MDC: window.onhashchange для примеров использования. Простое асинхронное прослушивание может выглядеть так:

window.onhashchange = function() {
   // do something awesome here
};

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

2 голосов
/ 21 января 2011

Подключаемый модуль jQuery Бен Алмана * hashchange предоставляет возможность отслеживать хэш на предмет изменений.

...