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/ –