Существует ли обработчик изменения URL-адреса для приложения HTML5 AJAX (например, обработчик hashchange для HTML4)
Я использую для прослушивания события обработчика hashchange. Но теперь с HTML5 вы можете изменить URL без использования хеша. Как добавить слушателя к изменениям URL?
1 ответ
Хеш -изменения могут произойти даже без использования JS. Как и поведение по умолчанию щелчка ссылки привязки, может вызвать изменение хеша.
Объект истории HTML5 может управляться только через JS. Для этого есть pushState() и replaceState (). После того, как браузер вернется назад и вперёд, он вызовет событие popstate. Я не знаю других обработчиков событий для истории HTML5.
$(window).bind("popstate", function() {
console.log(window.location.href);
});
Если вам требуется триггер всякий раз, когда что-то выдвигает состояния к объекту истории, вы должны полагаться на того, кто вызывает его, чтобы позволить наблюдателям (обратным вызовам) для него.
В противном случае вы можете попробовать что-то не очень надежное:
function onPushState(callback) {
(function(pushState) {
history.pushState = function() {
pushState.apply(this, arguments);
callback.apply(window, arguments);
};
})(history.pushState);
}
onPushState(function() {
console.log(window.location.href);
});
Вы можете сделать то же самое для замены состояния.
Опять же, это не может быть хорошей идеей, так как вы меняете поведение браузера по умолчанию.