HTML5 引入了一些非常简洁的工具来操作浏览器历史记录,即history.pushState
/replaceState
方法和onpopstate
事件,因此我们不必依赖location.hash
es 来为我们的 Web 应用程序显示有意义的 url。
(或者更好的是,当 IE<10 的采用可以忽略不计时,我们不必依赖哈希。)
history.pushState
如果目标状态是使用 创建的,即使 URL 看起来完全不同,使用浏览器的后退和前进按钮也不会重新加载页面。
但是,与更改哈希不同的是,如果用户从浏览器的地址栏中更改 url,浏览器会重新加载页面。不知何故,我怀疑是否有有效的解决方案,但问题是:有没有办法阻止浏览器重新加载页面,并强制它推送历史状态?