使用jQuery删除浏览器历史记录

6
我有一个基于jQuery的ajax应用程序。我使用了jQuery history插件启用了浏览器历史记录。但我们发现该应用程序生成了太多的历史记录。
特别是,我们提供了一个页面内的“ajax-back”按钮,它使页面返回到先前的ajax状态。当按下页面内的“ajax-back”按钮时,我们希望它像浏览器后退按钮一样,移动历史记录的当前索引或删除最新的历史记录,而不是插入新的历史记录。
所以,我想问,是否可能从javascript中删除最新的浏览器记录? 或者是否可能修改浏览器历史记录列表的当前索引? 非常感谢基于jQuery history插件的示例。
2个回答

8

您想要尝试的操作可能不太容易实现。有一个window.location.replace函数,可以跳转到新的URL并从历史记录中删除当前页面,但这仅适用于完整的页面导航,并且几乎肯定会破坏jQuery伪造历史记录的方式。

使用window.history.go()可以改变您在历史记录堆栈中的位置,它接受一个整数偏移量并导航到相关条目。它不会修改堆栈,只是将您放在一个新的位置。还有back()和forward()函数,它们分别调用go()函数并传入-1和1。这可能是您正在寻找的内容,但它不会修改堆栈,只是在其中移动。

理想情况下,您应该找到一个jQuery插件,它不像jQuery.history那样维护历史记录,而是提供一个onhashchange抽象层,您的库将仅对哈希更改做出反应。这样,浏览器负责历史记录堆栈,您就不会遇到许多困扰ajaxian历史记录库的问题了。


1
+1. 替代导航是一个使用上的噩梦。请使用真正的后退/前进按钮。 - bobince

3

通常通过JavaScript只能非常有限地访问浏览器历史记录(以防止网站窥探/访问该信息)。简而言之,据我所知,您无法通过jQuery完成您正在尝试的操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接