【问题标题】:How to prevent the Browser to push a state into the history?如何防止浏览器将状态推送到历史记录中?
【发布时间】:2013-10-16 07:50:25
【问题描述】:

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

假设我的网站名称是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 推送每个状态?

谢谢!

【问题讨论】:

  • 你能否让 Web 应用程序只使用默认值而不在 URL 中添加任何哈希值?
  • 默认值是什么意思?

标签: javascript browser-history hashchange


【解决方案1】:

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

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

【讨论】:

  • 这些都是状态,我想回到。
猜你喜欢
  • 1970-01-01
  • 2015-02-05
  • 1970-01-01
  • 2016-08-27
  • 1970-01-01
  • 2020-01-30
  • 2012-04-14
  • 2015-06-14
  • 2018-11-30
相关资源
最近更新 更多