2014-04-01 35 views
2

我有一個頁面,其中內容使用AJAX進行更改,URL使用history.pushstate進行更新。經過一些更新後,他們之間的往返轉換也正常,謝謝window.onpopstate。history.pushState和window.onpopstate通過各種頁面

的onpopstate的代碼是:

window.onpopstate = function (e) { 
    if (e.state) { 
    if (e.state.type == 'product-detail' && $('.product-container').length == 1) { 
     updateProductDetail(e.state.html); 
    } 
    else { 
     location.reload(); 
    } 
    } 
}; 

所以我檢查我是否應該使用彈出狀態,我是否仍然在頁面上,我可以重新更新信息(HTML數據被返回的AJAX調用)。如果沒有(即我在另一個頁面上,並且無法在此處應用更新),則使用新的Url(這是與推送狀態一起存儲的URL)重新加載整個頁面。

這一切都按預期工作,除非我從此頁面轉到另一頁面,然後按回。 Chrome只顯示AJAX請求的內容,即只顯示更新的信息,沒有任何其他內容(所以不需要js,css等等)。 Firefox似乎加載整個頁面,並繼續使用onpopstate,如果再次按下。 Chrome似乎又回來了,只顯示AJAX請求收到的數據。 我試圖把整個頁面(document.documentElement.outerHTML)放在推送狀態的「html」屬性中,但無濟於事。 PS:使用Chrome的調試器,我可以看到當按下第二頁上的'back'時,window.onpopstate不會被觸發。

+0

我有相同的問題,我想知道,你是怎麼解決問題? – Szenis

回答

0

不知道您是否已經找到解決方案。 如果沒有,看看文檔

Location reload() Method on W3Schools

特別是這部分:

語法

location.reload(forceGet)

參數值

forceGet布爾可選。

指定重新加載的類型: false - 默認值。重新加載緩存中的當前頁面。 真 - 當前的頁面必須從服務器重新加載

因此,嘗試在「其他」部分驗證碼:

location.reload(true); 
相關問題