使用新 URL 更新地址栏(无需哈希)或重新加载页面

2022-08-29 22:32:49

我要么梦想过chrome(开发通道)实现一种通过javascript(路径,而不是域)更新地址栏而无需重新加载页面的方法,要么他们真的这样做了。

但是,我找不到我认为我读过的文章。

我是疯了还是有没有办法做到这一点(在Chrome中)?

p.s. 我不是在谈论window.location.hash等。如果上述情况存在,这个问题的答案将是不真实的。


答案 1

您现在可以在大多数“现代”浏览器中执行此操作!

以下是我阅读的原始文章(发布于2010年7月10日):HTML5:在不刷新页面的情况下更改浏览器URL

有关pushState/replaceState/popstate(又名HTML5 History API)的更深入研究,请参阅MDN文档

TL;DR,你可以这样做:

window.history.pushState("object or string", "Title", "/new-url");

请参阅我对修改URL而不重新加载页面的回答,以获取基本操作方法。


答案 2

仅更改哈希之后的内容 - 旧浏览器

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');

立即尝试在控制台中运行这些操作!