2012-02-15 66 views
0

我正在使用數據表JQuery插件。我使用它與AJAX和分頁(服務器端)。每一行都包含指向該記錄的詳細視圖的鏈接。點擊該鏈接,然後點擊後退按鈕,我想返回上一頁。 (注意:datatables自己的狀態保存不能使用)。JavaScript在將URL參數放入歷史記錄之前更改

這可以實現如果您可以在將當前網址添加到歷史記錄中之前添加url參數。

可以這樣做嗎?純JS或JQuery並不重要。

(注:我很新的做這樣的東西,看了一下使用#爲這一點,但從未做過,所以如果你建議,請給我的問題提供適用的一個例子)

編輯:

非常基本指南jQuery插件燒烤 (http://benalman.com/projects/jquery-bbq-plugin/)

假定URL具有一個#的散列= 2 & b =測試,則可以通過以下方式得到數值:

//true = optional converts 2 to an integer, false to boolean,... 
var a = $.bbq.getState('a',true); 

您可以更改/通過添加值:在情況下,它勢必

var hash = "a=3&b=hello"; 
$.bbq.pushState(hash); 

pushState的火災hashchange事件。要綁定的事件,但在doucment.ready功能如下:

// called when # part of URL is modified 
$(window).bind('hashchange', function(event) { 
    var hash = event.fragment; // full hash as string 
    var a = event.getState('a', true); // value for a 
    // here do meaningful action like an AJAX request using the hash parameters  
}); 

回答

5

是的,HTML5 History API可以讓你做到這一點。查看MDN上的Manipulating the Browser History文章。

這裏是增加了一個參數設置爲當前URL和替換當前的歷史記錄條目的例子:

var newURL = location.href + (location.search ? "&" : "?") + "myParameter=myValue"; 
history.replaceState({}, '', newURL); 

歷史API是HTML5功能,不幸的是not supported on all browsers。但是,有一個名爲history.js的polyfill,聲稱爲所有瀏覽器提供支持。

UPDATE:

而不是滾動你可能會想看看現有的解決方案和jQuery插件自己的AJAX歷史實現。看看例如在What is the best back button jQuery plugin?問題的答案。

+0

得到我的投票。 – daniyel 2012-02-15 10:48:00

+0

thx。我隱約聽說過HTML5歷史API,但遺憾的是應用程序必須在IE 8中運行,並且根據您的鏈接,IE 8不受支持。我去http://benalman.com/projects/jquery-bbq-plugin/中提到你的鏈接(加上發現谷歌搜索 – 2012-02-15 12:38:07