我要么梦想着 chrome(开发通道)实现一种通过 javascript(路径,而不是域)更新地址栏而不重新加载页面的方法,要么他们真的做到了。
但是,我找不到我 认为 我读过的文章。
我疯了还是有办法做到这一点(在 Chrome 中)?
ps 我不是在谈论 window.location.hash等。如果上述情况存在,那么这个问题的答案将是不真实的。
注意:如果您使用的是 HTML5 浏览器,则应忽略此答案。从其他答案中可以看出,这现在是可能的。
如果不重新加载页面,就无法在浏览器中修改URL 。URL 表示最后加载的页面是什么。如果您更改它(document.location),那么它将重新加载页面。
document.location
一个明显的原因是,您在其上编写了一个www.mysite.com看起来像银行登录页面的网站。然后你把浏览器的网址栏改成www.mybank.com. 用户将完全不知道他们真的在看www.mysite.com.
www.mysite.com
www.mybank.com
您现在可以在大多数“现代”浏览器中执行此操作!
这是我阅读的原始文章(2010 年 7 月 10 日发布):HTML5:更改浏览器 URL 而不刷新页面。
要更深入地了解 pushState/replaceState/popstate(又名 HTML5 History API),请参阅 MDN 文档。
TL;DR,你可以这样做:
window.history.pushState("object or string", "Title", "/new-url");
有关基本操作方法,请参阅我对修改 URL 而不重新加载页面的回答。