在点击后,history.js会保留在页面上吗?

时间:2013-11-14 11:11:50

标签: javascript history.js

我有一个使用AJAX更新内容的网站。它是在考虑渐进增强的情况下开发的,因此它也处理查询字符串。

使用PHP的URL:

index.php/products?cat=1&colors=1

使用AJAX的URL:

index.php/products (Currently stays like this for the life of this page)

希望最终获得此网址:

index.php/products#cat=1&colors=1

我想使用history.js,但我注意到对于HTML5浏览器,它将URL更改为第一个URL。 (!!)

history.js是否仅修改window.location而不实际跳转到链接?如果没有,那么这意味着整个页面将使用PHP重新加载,从而破坏了我的脚本的目的。如果是这种情况,这个库是否有解决方法?

1 个答案:

答案 0 :(得分:1)

the docs for history.js开始,该库提供pushStatereplaceState功能。 Mozilla article on manipulating browser history值得一读,以帮助理解这意味着什么,正如文章直接说的那样:

  

URL - 此历史记录条目的URL由此参数指定。注意   调用后浏览器不会尝试加载此URL   pushState(),但它可能会稍后尝试加载URL   用户重新启动浏览器后。

因此,当您通过任何方式(包括通过pushState)使用history.js时,网址将会更改,以便用户可以将网址加入书签以便稍后返回并获得相同的结果...但浏览器由于pushState操作,我们不会加载页面。

另外,了解the difference between pushState and replaceState同时更改地址栏中的网址,但它们对历史记录的影响也不同。