HTML5向manipulate the browser history引入了一些真正的工具,即history.pushState
/ replaceState
方法和onpopstate
事件,所以我们不要我必须依靠location.hash
es为我们的网络应用程序显示一个有意义的网址。
(或者更好的是,当IE< 10的采用率可以忽略不计时,我们不会依赖哈希值。)
如果使用history.pushState
创建目标状态,则使用浏览器的后退和前进按钮不会重新加载页面,即使URL看起来完全不同。
但是,与更改哈希值不同,如果用户更改了浏览器地址栏中的URL,则浏览器会重新加载页面。不知怎的,我怀疑这是一个有效的解决方案,但问题是:有没有办法阻止浏览器重新加载页面,并强制它推动历史状态?
答案 0 :(得分:1)
我不相信。 AFAIK,手动输入地址栏中的地址 - 不像点击链接,后退/前进按钮,pushstate / popstate和表单提交 - 被定义为请求新页面,除非您更改哈希(如在html5之前的日子) )。
答案 1 :(得分:1)
没有。无法通过地址栏中断新页面的加载(unload
事件除外,但它们只能为您提供“您确定要离开当前页面吗?”中断)。
真正的URL应由您的服务器处理,该服务器应将该页面构建为该URL的预期状态,然后再将其传送到客户端。