Единственный способ действительно сделать это (и как это делает «действительно простая история») - это установить интервал, который будет проверять текущий хэш и сравнивать его с тем, что было раньше, мы делаем это и позволяем подписчикам подписываться на измененный хэш. событие, которое мы запускаем, если хэш изменяется ... это не идеально, но браузеры действительно не поддерживают это событие изначально.
Обновите, чтобы этот ответ был свежим:
Если вы используете jQuery (который сегодня должен быть в некоторой степени основополагающим для большинства), то хорошим решением будет использование абстракции, которую jQuery предоставляет вам, используя свою систему событий для прослушивания событий hashchange в объекте окна.
$(window).on('hashchange', function() {
//.. work ..
});
Приятно то, что вы можете писать код, которому не нужно даже беспокоиться о поддержке hashchange, однако вам НЕОБХОДИМО творить чудеса в виде несколько менее известной функции jQuery специальные события jQuery.
С помощью этой функции вы, по сути, можете запустить некоторый установочный код для любого события, когда кто-то впервые попытается использовать событие каким-либо образом (например, привязка к событию).
В этом установочном коде вы можете проверить поддержку встроенного браузера, и если браузер не реализует это изначально, вы можете настроить один таймер для опроса изменений и запуска события jQuery.
Это полностью избавляет ваш код от необходимости понимать эту проблему поддержки, реализация специального события такого рода тривиальна (чтобы получить простую рабочую версию на 98%), но зачем это делать , когда это уже сделал кто-то другой.
person
Community
schedule
25.03.2009