Updating address bar with new URL without hash or reloading the page
I either dreamt about chrome (dev channel) implementing a way to update the address bar via javascript (the path, not domain) without reloading the page or they really have done this.
However, I can't find the article I think I read.
Am I crazy or is there a way to do this (in Chrome)?
ps I'm not talking about window.location.hash, et al. If the above exists the answer to this question will be untrue.
You can now do this in most "modern" browsers!
Here is the original article I read (posted July 10, 2010): HTML5: Changing the browser-URL without refreshing page.
For a more in-depth look into pushState/replaceState/popstate (aka the HTML5 History API) see the MDN docs.
TL;DR, you can do this:
window.history.pushState("object or string", "Title", "/new-url");
See my answer to Modify the URL without reloading the page for a basic how-to.
Changing only what's after hash - old browsers
document.location.hash = 'lookAtMeNow';
Changing full URL (the domain and protocol must be the same as original!) Chrome, Firefox, IE10+
history.pushState('data to be passed', 'Title of the page', 'https://stackoverflow.com/test');
The above will add a new entry to the history so you can press Back button to go to the previous state. To change the URL in place without adding a new entry to history use
history.replaceState('data to be passed', 'Title of the page', 'https://stackoverflow.com/test');
Try running these in the console now!
更新到大卫回答甚至检测浏览器不支持pushstate:
if (history.pushState) {
window.history.pushState("object or string", "Title", "/new-url");
} else {
document.location.href = "/new-url";
}
链接地址: http://www.djcxy.com/p/12122.html
上一篇: 确定iframe中的元素是否在屏幕上可见