6

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

特别是,我们提供了一个页面内的“ajax-back”按钮,使页面能够返回到以前的 ajax 状态。当按下页面内的“ajax-back”按钮时,我们希望它像浏览器返回按钮一样,通过移动历史的当前索引,或删除最新的历史记录,而不是插入新的历史记录。

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

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

4

2 回答 2

8

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

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

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

于 2009-04-18T00:31:39.643 回答
3

浏览器历史记录通常可以通过 javascript 以非常有限的方式访问(以防止站点窥探/访问该信息)。简短的回答 - 据我所知,您无法通过 jquery 获得您想要做的事情。

于 2010-03-06T03:58:59.170 回答