1

HTML5 引入了一些非常简洁的工具来操作浏览器历史记录,即history.pushState/replaceState方法和onpopstate事件,因此我们不必依赖location.hashes 来为我们的 Web 应用程序显示有意义的 url。

(或者更好的是,当 IE<10 的采用可以忽略不计时,我们不必依赖哈希。)

history.pushState如果目标状态是使用 创建的,即使 URL 看起来完全不同,使用浏览器的后退和前进按钮也不会重新加载页面。

但是,与更改哈希不同的是,如果用户从浏览器的地址栏中更改 url,浏览器重新加载页面。不知何故,我怀疑是否有有效的解决方案,但问题是:有没有办法阻止浏览器重新加载页面,并强制它推送历史状态?

4

2 回答 2

1

我不相信。AFAIK,在地址栏中手动输入地址 - 与单击链接、后退/前进按钮、pushstate/popstate 和表单提交不同 - 被定义为请求新页面,除非您更改哈希(如在 html5 之前的日子)。

于 2013-08-06T13:23:37.940 回答
1

不可以。不能通过地址栏中断新页面的加载(事件除外unload,但它们只能给您“您确定要离开当前页面吗?”中断)。

真实的 URL 应该由您的服务器处理,该服务器应该在将页面交付给客户端之前将该页面构建为该 URL 的预期状态。

于 2013-08-06T13:47:16.850 回答