使用新的URL更新地址栏而不散列或重新加载页面
我或者梦想铬(开发通道)实现一种方式来更新地址栏通过JavaScript(path,而不是域),无需重新加载页面,或他们真的已经做到了这一点。
但是,我找不到我认为我阅读的文章。
我疯了还是有办法做到这一点(在Chrome中)?
PS我不是在谈论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';
Chrome,Firefox,IE10 +更改完整的URL(域和协议必须与原来的一样!)
history.pushState('data to be passed', 'Title of the page', 'https://stackoverflow.com/test');
以上将添加一个新的历史logging,所以你可以按返回button转到以前的状态。 要更改url而不添加新的条目到历史使用
history.replaceState('data to be passed', 'Title of the page', 'https://stackoverflow.com/test');
尝试在控制台中运行这些!
更新到大卫答案甚至检测浏览器不支持pushstate:
if (history.pushState) { window.history.pushState("object or string", "Title", "/new-url"); } else { document.location.href = "/new-url"; }