我用来监听hashchange handler事件。但现在使用HTML5,您可以在不使用哈希的情况下更改网址。如何为url更改添加侦听器?
答案 0 :(得分:1)
HTML5历史对象只能通过JS操作。为此,有pushState()和replaceState()。使用后,浏览器后退和前进按钮将触发popstate event。我知道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);
});
你可以做同样的替换状态。
同样,这可能不是一个好主意,因为您正在更改默认浏览器行为。