history.replaceState 仍然添加条目到“浏览历史”

问题描述 投票:0回答:2

具体调用如下代码片段:

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

不会正确地影响当前页面的后退按钮行为,但是 will 添加一个条目到“浏览历史”页面,这是我不想要的。下图是 Chrome 的历史记录页面,但在 Firefox 中也会出现这种情况。

有没有办法在不向用户的浏览历史记录中添加条目的情况下替换当前的 URL?

我查询的是独立的浏览器历史页面,而不是后退按钮使用的实际页面导航历史。

Chrome Browser History

javascript google-chrome browser-history
2个回答
4
投票

我在全球历史上找不到任何 W3C 规范,但即使是 session history 也没有指定预期的行为是什么。

实际上,这是一个 open bug 超过 8 年的时间,大多数浏览器都选择以这种方式实现全局历史记录。简而言之,除了不调用 pushState/replaceState 之外,可能没有其他解决方法。


0
投票

改用

location.replace("#" + value)
。像
history.replaceState(...)
它不会添加新的后退/前进浏览器历史记录条目,但也不会添加条目到 Chrome 的“浏览器历史记录”页面(即会话历史记录)。

另见https://stackoverflow.com/a/6945614/165673

© www.soinside.com 2019 - 2024. All rights reserved.