【问题标题】:Firefox Back Button loops a window.location.hash redirectFirefox 后退按钮循环 window.location.hash 重定向
【发布时间】:2019-07-17 11:16:54
【问题描述】:

所以基本上我想将 /foo 重定向到 /foo#bar(bar 可能是不同的东西) 更新位置的代码是:

window.location.hash = "#bar";

在 chrome/safari 上这很好用,当我从 /foo#bar 浏览器返回时,我回到了原来的页面。

firefox 将 /foo 保留在历史记录中,当我浏览器返回时,它只是再次重定向到 /foo#bar,这使得浏览器无法正常工作。

任何想法如何解决它。我怎样才能操纵历史来防止这种情况发生。

如果您想尝试实际示例,只需致电https://people.sap.com/stefan.scheuermann 并使用浏览器返回。它不会带你回到 Firefox 上。

谢谢!

【问题讨论】:

  • history.replaceState() 是否适用于您的用例?
  • history.replaceState() 通常可以正常工作,它会以正确的方式更改 url,但是我该如何做 # 重定向,因为它在页面上没有做任何事情。

标签: javascript browser-history


【解决方案1】:

对我们来说,这是通过检查是否已经存在哈希集来解决的:

if (window.location.hash) {
    window.location.hash = value
} else {
    // Hash didn't exist yet: replace history to prevent loop on Firefox
    window.location.replace('#' + value)
}

【讨论】:

    猜你喜欢
    • 2015-09-08
    • 2011-08-20
    • 2012-02-23
    • 1970-01-01
    • 2011-07-12
    • 1970-01-01
    • 2022-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多