【问题标题】:History states and changing the url on the url bar历史状态和更改 url 栏上的 url
【发布时间】:2013-08-06 13:06:17
【问题描述】:

HTML5 为manipulate the browser history 引入了一些真正简洁的工具,即history.pushState/replaceState 方法和onpopstate 事件,因此我们不必依赖location.hash es 为我们的 Web 应用程序显示一个有意义的 url。

(或者更好的是,当 IE将不必依赖哈希。)

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

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

【问题讨论】:

    标签: javascript html5-history


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 是这样想的。在计划使用history API 之前,应始终考虑服务器的工作,因为 - 你知道 - 用户总是可以将 url 粘贴到地址栏中。但如果history API 的目的是提供一种很酷的方式来更改 url 而无需重新加载页面,那感觉目标并没有完全实现。
      猜你喜欢
      • 2023-03-19
      • 1970-01-01
      • 2011-09-17
      • 2020-11-16
      • 1970-01-01
      • 2015-05-23
      • 1970-01-01
      • 2012-06-24
      • 1970-01-01
      相关资源
      最近更新 更多