2009-04-17 319 views
5

我有一个基于jQuery的ajax应用程序。我启用了浏览器历史记录,使用jQuery历史记录插件。但是我们发现应用程序产生了太多的历史。使用jQuery删除浏览器历史记录

特别是,我们提供了页面内的“ajax-back”按钮,使页面能够返回到先前的ajax状态。当按下页面内的“ajax-back”按钮时,我们希望它的行为类似于broswer后退按钮,通过移动历史记录的当前索引或删除最新历史记录,插入新历史记录的实例。

那么,我想问一下,是否可以从javascript中删除最新的浏览器记录?是否可以修改浏览器历史列表的当前索引?

基于jQuery历史插件的示例将非常感谢。

回答

7

很可能你不会轻易做你想做的事。有一个window.location.replace,它转到一个新的URL并从历史记录中删除当前页面,但这是完整的页面导航,几乎肯定会打破jQuery伪造历史的方式。

可以使用window.history.go()更改历史堆栈中的哪个位置,它将历史中的整数偏移量导航到相关条目。它根本不修改堆栈,它只是把你放在一个新的地方。还有back()和forward()函数,它们分别与-1和1一起调用。这可能是你正在寻找的东西,尽管它不会修改堆栈,只需将其移动即可。

理想情况下,你会发现一个jQuery插件,它不像jQuery.history那样维护历史记录,而是提供onhashchange抽象,而你的库只是对哈希变化做出反应。这样,浏览器负责历史堆栈,并且不会遇到很多讨厌ajaxian历史库的疯狂问题。

+1

+1。 Ersatz导航是一个可用性的噩梦。使用真正的后退/前进按钮。 – bobince 2009-04-18 04:19:13

2

浏览器历史记录通常以非常有限的方式通过javascript访问(以防止网站窥探/访问该信息)。简短的回答 - 就我所知,你试图做的事情并不是通过jQuery提供给你的。