我有一个使用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重新加载,从而破坏了我的脚本的目的。如果是这种情况,这个库是否有解决方法?
答案 0 :(得分:1)
从the docs for history.js
开始,该库提供pushState
和replaceState
功能。 Mozilla article on manipulating browser history值得一读,以帮助理解这意味着什么,正如文章直接说的那样:
URL - 此历史记录条目的URL由此参数指定。注意 调用后浏览器不会尝试加载此URL pushState(),但它可能会稍后尝试加载URL 用户重新启动浏览器后。
因此,当您通过任何方式(包括通过pushState
)使用history.js
时,网址将会更改,以便用户可以将网址加入书签以便稍后返回并获得相同的结果...但浏览器由于pushState
操作,我们不会加载页面。
另外,了解the difference between pushState
and replaceState
同时更改地址栏中的网址,但它们对历史记录的影响也不同。