Firefox“后退”按钮循环window.location.hash重定向

时间:2019-02-23 14:37:47

标签: javascript browser-history

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

window.location.hash = "#bar";

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

firefox将/ foo保留在历史记录中,当我浏览器退回时,它再次重定向到/ foo#bar,这使浏览器回退。

任何解决方法。我该如何处理历史记录以防止这种情况。

如果您想尝试真实的示例,只需调用https://people.sap.com/stefan.scheuermann并返回浏览器即可。它不会带您回到使用Firefox的地方。

谢谢!

1 个答案:

答案 0 :(得分:0)

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

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)
}