HTML5 为 manipulate the browser history 引入了一些非常的简洁工具,即 history.pushState
/replaceState
方法和 onpopstate
事件,所以我们不必依赖 location.hash
es 为我们的网络应用程序显示一个有意义的 url。
(或者更好的是,当 IE<10 的采用可以忽略不计时,我们不会必须依赖哈希。)
如果目标状态是使用 history.pushState
创建的,即使 URL 看起来完全不同,使用浏览器的后退和前进按钮也不会重新加载页面。
但是,与更改哈希不同,如果用户从浏览器的地址栏更改 url,浏览器会重新加载页面。不知何故,我怀疑对此是否有有效的解决方案,但问题是:是否有办法阻止浏览器重新加载页面,并强制它推送历史状态?
最佳答案
我不这么认为。 AFAIK,在地址栏中手动输入地址 - 与单击链接、后退/前进按钮、pushstate/popstate 和表单提交不同 - 被定义为请求新页面,除非您更改哈希(就像在 html5 之前的日子里) ).
关于javascript - 历史状态和更改网址栏上的网址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18081068/