我在我的解决方案中使用history.replaceState(null, "historyTitle", "url")
将页面的网址替换为更易于阅读的内容。我面临的问题是,虽然它取代了URL,并且在浏览器中导航回到了正确的页面,但"historyTitle"
部分似乎在chrome中被忽略 - 而是将整个URL添加为页面窗口历史记录中的位置而不是仅使用标题。我怎样才能克服这一点来展示" historyTitle"在我的浏览器历史记录中,我登陆了该特定页面?
小编辑:我将此与我在MVC中设置的自定义路由结合使用,因此即使更改标题,然后刷新页面,MVC路由器仍然导航到正确的页面。它只是chrome中窗口历史记录(ctrl + H)中的标题,它没有正确更新标题并将整个页面URL转储到该记录中。
答案 0 :(得分:1)
确实这是一个错误,虽然故意有2年了。问题在于一些不明确的规范以及涉及document.title
和后退/前进时的复杂性。
请参阅Webkit和Mozilla上的错误参考。此外,Opera在引入History API时表示它没有使用title参数,可能仍然没有。
目前是pushState和replaceState的第二个参数 - 标题 历史记录条目 - 不是用于Opera的实现,但可能 有一天。潜在的解决方案
我看到的唯一方法是更改title元素并改为使用pushState:
document.getElementsByTagName('title')[0].innerHTML = 'bar';
window.history.pushState( {} , 'bar', '/bar' );