历史记录并更改网址栏上的网址

时间:2013-08-06 13:06:17

标签: javascript html5-history

HTML5向manipulate the browser history引入了一些真正的工具,即history.pushState / replaceState方法和onpopstate事件,所以我们不要我必须依靠location.hash es为我们的网络应用程序显示一个有意义的网址。

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

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

但是,与更改哈希值不同,如果用户更改了浏览器地址栏中的URL,则浏览器重新加载页面。不知怎的,我怀疑这是一个有效的解决方案,但问题是:有没有办法阻止浏览器重新加载页面,并强制它推动历史状态?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

真正的URL应由您的服务器处理,该服务器应将该页面构建为该URL的预期状态,然后再将其传送到客户端。