在window.history.pushState之后返回第一个状态

时间:2014-04-20 09:38:05

标签: javascript url-rewriting pushstate

当我在页面上打开弹出窗口时,我使用window.history.pushState来更改当前的URL,这非常有效且非常方便。在弹出窗口中,我可以转到其他URL。问题是,当我关闭弹出窗口时,我再次使用pushState和第一个URL,但是如果按回来,它会再次打开弹出窗口。

我想要的是在关闭弹出窗口后按回到返回上一页然后再打开弹出窗口。

主页 - >页面 - >弹出1 - >弹出2 - > (关闭弹出窗口)页面 - > (按回)主页(而不是弹出2)

1 个答案:

答案 0 :(得分:0)

我所做的是使用history.go(-x)而不是pushState(originalURL)

主页 - > (普通导航)页面 - > (pushstate)Popup 1 - > (pushstate +增加弹出计数)Popup 2 - > (关闭弹出+去(-2))页面 - > (按回)主页

修改

执行此操作后,我发现大多数浏览器都有历史记录大小的限制(在chrome上为50)。所以当我从弹出窗口1移动到2时,我改为replaceState

主页 - > (普通导航)页面 - > (pushstate)Popup 1 - > (replacestate)Popup 2 - > (关闭弹出+去(-1))页面 - > (按回)主页

这也会在按下时关闭弹出窗口。