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

Go back to first state after window.history.pushState

本文关键字:第一个 状态 之后 pushState window history 返回      更新时间:2023-09-26

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

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

主页->页面->弹出菜单1->弹出菜单2->(关闭弹出菜单)页面->(按下返回)主页(而不是弹出菜单2)

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

主页->(正常导航)页面->(推送状态)弹出1->(推推送状态+增加弹出计数)弹出2->(关闭弹出+转到(-2))页面->

编辑

这样做之后,我发现大多数浏览器都有历史记录大小的限制(在chrome上是50)。因此,当从弹出窗口1移动到2时,我改为replaceState

主页->(正常导航)页面->(推送状态)弹出1->(替换状态)弹出2->(关闭弹出+转到(-1))页面->

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

相关文章: