使用新的URL更新地址栏,而不散列或重新加载页面

JavaScript

hide on

2020-03-11

我梦ed以求的是chrome(开发者通道)实现了一种无需重新加载页面即可通过javascript(地址而非域)更新地址栏的方法,或者他们确实做到了。

但是,我找不到我的文章

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

ps我不是在谈论window.location.hash等。如果以上存在,则该问题的答案将是不正确的。

第811篇《使用新的URL更新地址栏,而不散列或重新加载页面》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

2个回答
神无 2020.03.11

更新至Davids答案,甚至可以检测不支持pushstate的浏览器:

if (history.pushState) {
  window.history.pushState("object or string", "Title", "/new-url");
} else {
  document.location.href = "/new-url";
}
米亚猴子 2020.03.11

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

这是我阅读的原始文章(发布于2010年7月10日):HTML5:更改浏览器URL而不刷新page

要更深入地了解pushState / replaceState / popstate(又称HTML5历史API),请参阅MDN文档

TL; DR,您可以执行以下操作:

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

有关基本操作方法,请参阅我的答案,无需重新加载页面即可修改URL

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android