1
我用于侦听hashchange处理程序事件。但现在使用HTML5,您可以在不使用散列的情况下更改网址。如何添加一个监听器的URL更改?是否有HTML5 AJAX应用程序的URL更改处理程序?(如HTML4的hashchange处理程序)
我用于侦听hashchange处理程序事件。但现在使用HTML5,您可以在不使用散列的情况下更改网址。如何添加一个监听器的URL更改?是否有HTML5 AJAX应用程序的URL更改处理程序?(如HTML4的hashchange处理程序)
即使不使用JS,也可能发生散列更改。像单击锚点链接的默认行为一样,可以触发哈希更改。
HTML5历史记录对象只能通过JS进行操作。为此,有pushState()和replaceState()。一旦使用,浏览器后退和前进buttun将触发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);
});
你可以做同样的替换状态。
同样,这可能不是一个好主意,因为您正在更改默认浏览器行为。
我不认为pushstate功能工作 – einstein
我正在使用Chrome – einstein
@ Woho87适合我(也在Chrome上):http://jsfiddle.net/Cxjey/ –