2014-04-20 19 views
1

我使用window.history.pushState來更改當前網址,當我在我的頁面上打開一個彈出窗口時,它運行良好,非常方便。在彈出窗口中,我可以轉到其他網址。問題是當我關閉彈出窗口時,我再次使用pushState和第一個URL,但是如果按回來,它會再次打開彈出窗口。返回到window.history.pushState之後的第一個狀態

我想要的是在關閉彈出窗口後按下Back返回到上一頁,然後打開彈出窗口。

首頁 - >首頁 - >彈出1 - >彈出2 - >(關閉彈出窗口)首頁 - >(按返回)首頁(而不是彈出2)

+0

可以發佈代碼嗎? –

+0

檢查[我的答案](http://stackoverflow.com/questions/20156939/how-to-handle-back-button-while-changing-the-browser-url-with-html5-pushstate/20157851#20157851)on這篇文章與你不同,它不談論彈出窗口,但是彈出窗口標識符的對象文字可以幫助你有條件地檢查「popstate」,如果你按下彈出窗口。 –

回答

0

我所做的是用history.go(-x)而不是做pushState(originalURL) 。彈出窗口1 - >(pushstate +增加彈出窗口數)彈出窗口2 - >(關閉彈出窗口+轉到(-2))頁面 - >(返回)首頁 - >(正常導航)頁面 - >

編輯

這樣做我看到大多數瀏覽器都有歷史尺寸的限制(在Chrome 50)之後。因此,當從彈出窗口1移至2時,我更改爲replaceState

首頁 - >(正常導航)頁面 - >(pushstate)彈出窗口1 - >(replacestate)彈出窗口2 - >(關閉彈出窗口+ )Page - >(Press back)主頁

這也會在按下後關閉彈出窗口。

相關問題