如何防止浏览器将状态推送到历史记录中

How to prevent the Browser to push a state into the history?

本文关键字:历史 记录 何防止 浏览器 状态      更新时间:2023-09-26

我目前正在一个网站上工作,遇到了以下问题:

假设我的网站名称是 www.mysite.com. 在页面的第一次调用中,我的 JavaScript 会检查 URL 中是否存在对 Web 应用程序状态很重要的某些参数。例如,这些参数是:

lang - language --> lang=1 means German
page - current Page --> page=home means its the homepage
cats - categories --> cats=1,2,3 means that the default categories are 1,2 and 3

如果只是调用 www.mysite.com,脚本会检测到未设置任何参数。然后,它将设置默认参数。根据带有哈希标记的 URL 修改,我将 URL 设置为:

www.mysite.com/#/page=home&lang=1&cats=12,13,18

关于这一点的真正问题是,在浏览器历史记录中设置了两种状态。第一个是 www.mysite.com,第二个是带有参数的复杂 URL。

所以想象一下我目前在

www.mysite.com/#/page=home&lang=1&cats=12,13,18

,然后立即按返回按钮。浏览器将我带到

www.mysite.com

然后我的 Javascript 检测到没有参数,所以它再次将我带到

www.mysite.com/#/page=home&lang=1&cats=12,13,18

如何解决这个问题?是否可以完全手动管理历史记录,以便我可以通过我的 JavaScript 推送每个状态?

谢谢!

切换到使用SessionStorage来存储参数,并可选择回退到cookie或其他东西。

然后仅对您希望能够返回的状态使用主题标签。