2012-05-10 35 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/ –

相關問題