1

我正在使用数据表 JQuery 插件。我将它与 AJAX 和分页(服务器端)一起使用。每行都包含指向该记录详细视图的链接。单击该链接,然后单击后退按钮时,我想返回上一页。(注意:不能使用数据表自己的状态保存)。

如果您可以在将当前 url 放入历史记录之前将其添加到当前 url,则可以实现这一点。

这可以做到吗?纯 JS 或 JQuery 并不重要。

(注意:我很新做这种事情,已经阅读了关于使用 # 的信息但从未这样做过,所以如果你建议请提供一个适用于我的问题的示例)

编辑:

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

假设 URL 具有 #a=2&b=test 的哈希值,您可以通过以下方式获取值:

//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    
});
4

1 回答 1

5

是的,HTML5 History API允许您这样做。查看 MDN 上的“操纵浏览器历史记录”文章。

这是一个向当前 URL 添加参数并替换当前历史记录条目的示例:

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

History API 是 HTML5 功能,遗憾的是并非所有浏览器都支持。但是,有一个名为history.js的 polyfill ,它声称可以为所有浏览器带来支持。

更新:

您可能希望查看现有的解决方案和 jQuery 插件,而不是滚动您自己的 AJAX 历史实现。看看例如什么是最好的后退按钮 jQuery 插件的答案?问题。

于 2012-02-15T10:35:02.047 回答