点击后历史记录.js是否保留在页面上

Does history.js stay on page after click?

本文关键字:保留 是否 js 历史 记录      更新时间:2023-09-26

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

使用 PHP 的网址:

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

使用 AJAX 的网址:

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

想要以这个网址结束:

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

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

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

history.js文档中,该库提供了pushStatereplaceState功能。 Mozilla关于操纵浏览器历史记录的文章值得一读,以帮助理解这意味着什么,正如文章直接说的那样:

URL

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

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

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

相关文章: