2009-04-17 135 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提供給你的。