2012-05-10 38 views

回答

1

即使不使用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); 
}); 

http://jsfiddle.net/Cxjey

你可以做同样的替换状态。

同样,这可能不是一个好主意,因为您正在更改默认浏览器行为。

+0

我不认为pushstate功能工作 – einstein

+0

我正在使用Chrome – einstein

+0

@ Woho87适合我(也在Chrome上):http://jsfiddle.net/Cxjey/ –

相关问题