使用新的URL更新地址栏而不散列或重新加载页面
我或者梦想着实现一种通过javascript(路径,而不是域)更新地址栏的方式来实现Chrome(开发通道),无需重新加载页面,或者他们确实已经完成了这项工作。
但是,我找不到我认为我阅读过的文章。
我疯了还是有办法做到这一点(在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 +
history.pushState('data to be passed', 'Title of the page', 'https://stackoverflow.com/test');
以上将添加一个新的历史记录,以便您可以按“返回”按钮转到以前的状态。 要更改网址而不添加历史记录使用的新条目
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";
}
链接地址: http://www.djcxy.com/p/12121.html
上一篇: Updating address bar with new URL without hash or reloading the page
下一篇: C#, Is there a better way to verify URL formatting than IsWellFormedUriString?