2011-09-19 69 views
5

我們正在使用window.history.replacestate處理一個項目。不幸的是,我們不是很擅長JavaScript。window.history.replaceState中的'data'是什麼

本質上,我們正在使用它來取代任何數量的「根」鏈接的短鏈接。例如:

domain.com/fJfk8 
domain.com/9dkDl 
domain.com/fjgdD 

都會「出現」爲:

domain.com/nice_url 

它沒有工作,所以我們把JavaScript中的頁面和瀏覽器是的話那麼大,如果沒有,他們會得到簡碼。

注意:我們不要要歷史!

所以我們只是使用:

window.history.replaceState('Object','Nice URL Title', '/nice_url'); 

的問題是,這似乎是工作,但我們不理解的「對象」(數據)的一部分。

究竟是什麼?

回答

3

您可以將Object參數設置爲arbritary數據,這將在state參數event對象是在popstate事件提供可用。

換句話說,您可以將其設置爲任何您想要的值,以幫助您在用戶瀏覽歷史記錄時將網頁恢復到所需的狀態。請參閱MDC documentation on window.history

window.history.replaceState({ 
    foo: 'bar' 
}, 'Nice URL Title', '/nice_url'); 

window.onpopstate = function (e) { 
    if (typeof e.state == "object" && e.state.foo == "bar") { 
     alert("Blah blah blah"); 
    } 
}; 

window.history.go(-1); 
+0

確定(快速讀取什麼是popstate是..)。因此,在我們的例子中,因爲我們不需要做任何事情,如果用戶通過歷史回報,因爲Url將工作在改變的狀態 - 我們可以讓這個空的? –

+0

@Mike:你很可能會。如果用戶通過'pushState'或'replaceState'在歷史記錄中向後導航到歷史堆棧中的頁面,頁面將不會自動更新;取決於你的'onpopstate'事件並將頁面改爲所需的狀態。 – Matt

相關問題