Javascript 不支持history.pushState的标题,什么';这是一个好的选择吗?

Javascript 不支持history.pushState的标题,什么';这是一个好的选择吗?,javascript,html,dom,cross-browser,html5-history,Javascript,Html,Dom,Cross Browser,Html5 History,和History.replaceState的第二个参数可用于设置历史记录条目的“标题” 这意味着当用户点击第1页到第8页时,他应该在历史记录栏中看到: 它正在进行狩猎和歌剧的拍摄。 但在Chrome和FireFox上,用户看到的是: 试图更改文档。标题无效,因为它更改了历史记录标题中的所有条目: 这个问题的最佳解决方案是什么? 我们是否被迫对使用pushState和replaceState实现的所有页面只使用一个历史标题?在所有浏览器中优雅地支持HTML5历史/状态API(pushStat

History.replaceState
的第二个参数可用于设置历史记录条目的“标题”

这意味着当用户点击第1页到第8页时,他应该在历史记录栏中看到:

它正在进行狩猎和歌剧的拍摄。

但在Chrome和FireFox上,用户看到的是:

试图更改
文档。标题
无效,因为它更改了历史记录标题中的所有条目:

这个问题的最佳解决方案是什么?

我们是否被迫对使用
pushState
replaceState
实现的所有页面只使用一个历史标题?

在所有浏览器中优雅地支持HTML5历史/状态API(pushState、replaceState、onPopState)

看看演示

使用示例:

History.pushState({state:1}, "State 1", "?state=1"); // logs {state:1}, "State 1", "?state=1"
History.pushState({state:2}, "State 2", "?state=2"); // logs {state:2}, "State 2", "?state=2"
History.replaceState({state:3}, "State 3", "?state=3"); // logs {state:3}, "State 3", "?state=3"
History.pushState(null, null, "?state=4"); // logs {}, '', "?state=4"
History.back(); // logs {state:3}, "State 3", "?state=3"
History.back(); // logs {state:1}, "State 1", "?state=1"
History.back(); // logs {}, "Home Page", "?"
History.go(2); // logs {state:3}, "State 3", "?state=3"

我也有同样的问题,看来你错了

如果History.js确实支持它,您也可以。通过查看源代码,history JS似乎是这样做的:

试试看{
document.getElementsByTagName('title')[0].innerHTML=title.replace('','').replace('&','&;');
}
捕获(异常){}
document.title=标题;

我测试过,Chrome对我来说很好:它不会“重写”整个历史标题。但是,后退或前进可能会导致页面重新加载,最终会重新初始化该标题。

解决此问题的一个解决方法是使用以下代码:

window.history.pushState({state: 1}, null, "https://example.com");
document.title = "Your title";
因此,只需将历史对象中的“title”条目替换为null,然后更改文档的标题即可


目前,我可以在Chrome、Opera和Firefox上使用它。没有测试任何其他浏览器,但我几乎可以肯定它将解决几乎所有浏览器上的问题。

大约一年前,History.js不再维护。请参见请注意,此代码需要位于
历史记录。pushState
之后才能显示正确的历史记录信息。
window.history.pushState({state: 1}, null, "https://example.com");
document.title = "Your title";