我有一個頁面,其中內容使用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不會被觸發。
我有相同的問題,我想知道,你是怎麼解決問題? – Szenis