使用新 URL 更新地址栏(无需哈希)或重新加载页面
2022-08-29 22:32:49
我要么梦想过chrome(开发通道)实现一种通过javascript(路径,而不是域)更新地址栏而无需重新加载页面的方法,要么他们真的这样做了。
但是,我找不到我认为我读过的文章。
我是疯了还是有没有办法做到这一点(在Chrome中)?
p.s. 我不是在谈论window.location.hash等。如果上述情况存在,这个问题的答案将是不真实的。
我要么梦想过chrome(开发通道)实现一种通过javascript(路径,而不是域)更新地址栏而无需重新加载页面的方法,要么他们真的这样做了。
但是,我找不到我认为我读过的文章。
我是疯了还是有没有办法做到这一点(在Chrome中)?
p.s. 我不是在谈论window.location.hash等。如果上述情况存在,这个问题的答案将是不真实的。
您现在可以在大多数“现代”浏览器中执行此操作!
以下是我阅读的原始文章(发布于2010年7月10日):HTML5:在不刷新页面的情况下更改浏览器URL。
有关pushState/replaceState/popstate(又名HTML5 History API)的更深入研究,请参阅MDN文档。
TL;DR,你可以这样做:
window.history.pushState("object or string", "Title", "/new-url");
请参阅我对修改URL而不重新加载页面的回答,以获取基本操作方法。
仅更改哈希之后的内容 - 旧浏览器
document.location.hash = 'lookAtMeNow';
更改完整网址。铬, 火狐, IE10+
history.pushState('data to be passed', 'Title of the page', '/test');
上面将向历史记录添加一个新条目,以便您可以按“后退”按钮转到以前的状态。要更改 URL 而不向历史记录添加新条目,请使用
history.replaceState('data to be passed', 'Title of the page', '/test');
立即尝试在控制台中运行这些操作!