2012-02-15 39 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