我有一個主頁,您可以將其他頁面加載到容器中。 加載頁面時,您仍然位於主頁面上,但瀏覽器URL應設置爲加載頁面的URL。 當關閉加載的頁面時,URL應重置爲主頁面的url。防止在window.history中的重複實例
我想通過簡單地使用history.replaceState
或pushState
解決此問題,而不必返回瀏覽器歷史記錄(因爲返回會導致一些瀏覽器刷新和滾動滾動)。
我目前的解決方案是
clickLoadPage => (pageUrl) {
closeOtherLoadedPages();
if (isOnMainPage())
pushState(pageUrl)
else
replaceState(pageUrl)
}
clickUnloadPage =>() {
replaceState(mainpageUrl);
}
注:它的設計,只有在任何時候加載一個頁面。例如:第一個加載頁面1。然後加載page2。期望的效果:page1關閉,url被page2取代。在該狀態下,在瀏覽器中返回將返回到主頁面的URL。
問題是,每當你加載一個新頁面,然後關閉它,一個帶有主頁面的新狀態被添加到窗口歷史記錄中。應該只有這些國家中的一個,但我最終有幾個。
是否有可能通過其他方式解決這個問題?我不熟悉window.history
api,是否可以執行諸如刪除狀態或確保不添加重複狀態的操作?
我用這個解決方案,是避免添加太多歷史狀態的唯一方法。 – Drkawashima
對於閱讀此內容的其他人來說只是一個提示:當您使用替換和返回多次導航到相同的URL時,您推送或替換到window.history的每個instants必須是唯一的 - 否則API似乎認爲它們是重複,你可以得到一個奇怪的行爲爲後退按鈕。我通過將datetime.now添加到我在window.history中推/替換的所有對象來解決此問題 – Drkawashima