0

我有一个使用 AJAX 更新内容的网站。它的开发考虑到了渐进增强,因此它还处理查询字符串。

使用 PHP 的网址:

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

使用 AJAX 的网址:

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

想要以这个 URL 结束:

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

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

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

4

1 回答 1

1

docs for 中history.js,该库提供了pushState功能replaceStateMozilla 关于操纵浏览器历史的文章值得 一读,以帮助理解这意味着什么,正如文章直接所说:

URL — 新历史条目的 URL 由该参数给出。请注意,浏览器在调用 pushState() 后不会尝试加载此 URL,但它可能会在稍后尝试加载 URL,例如在用户重新启动浏览器之后。

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

此外,了解和 之间的区别pushStatereplaceState因为两者都更改了地址栏中的 URL,但它们对历史记录的影响是不同的。

于 2013-11-14T13:19:50.460 回答