Chrome replaceState仍然会将条目添加到“BrowsingHistory”中

vatpfxk5  于 2023-04-03  发布在  Go
关注(0)|答案(2)|浏览(118)

具体来说,调用以下代码片段:

history.replaceState(undefined, undefined, "#" + value)

不会影响当前页面的后退按钮行为,但 * 会 * 添加一个条目到“浏览历史”页面,这是我不希望的。下图是Chrome的历史页面,但这也发生在Firefox中。
有没有什么方法可以替换当前的URL而不向用户的浏览历史添加条目?
我查询的是独立的浏览器历史记录页面,而不是返回按钮使用的实际页面导航历史记录。

cnh2zyt3

cnh2zyt31#

我找不到任何关于全局历史的W3C规范,但甚至会话历史也没有指定预期的行为是什么。
在实践中,这是一个开放的bug超过8年,大多数浏览器选择以这种方式实现全局历史。简而言之,除了不调用pushState/replaceState之外,可能没有其他解决方案。

bogh5gae

bogh5gae2#

使用location.replace("#" + value)代替。像history.replaceState(...)一样,它不会添加新的后退/前进浏览器历史记录条目,但也不会向Chrome的“浏览器历史记录”页面添加条目(即会话历史记录)。
另请参见https://stackoverflow.com/a/6945614/165673

相关问题