【发布时间】:2012-11-01 12:44:33
【问题描述】:
我在页面上有一个 dataTable 对象,表示我需要使用 url /releases 跟踪的版本列表我想添加以下功能
- 如果
/releases?query=<query>,dataTable将使用提供的查询进行初始化 -
query参数会在用户更改搜索词时更新 - 浏览器中的后退和前进按钮用于相应的查询
到目前为止,我能够做到前 2 个,但是当我监听 popstate 事件时,重绘表格会触发 pushState,我不知道如何防止。到目前为止,这是我的代码:
$(document).ready(function(){
var prevSearch;
var table = $('#releases').dataTable({
"bJQueryUI" : true,
"sPaginationType" : "full_numbers",
"iDisplayLength" : 50,
"oSearch": {"sSearch": '#{params[:query]}'},
"fnDrawCallback": function(oSettings) {
var curSearch = oSettings.oPreviousSearch.sSearch;
if (!prevSearch) {
prevSearch = curSearch;
} else if (curSearch != prevSearch) {
console.log("changed to: " + curSearch);
history.pushState({query: curSearch}, "title", "releases?query=" + curSearch);
prevSearch = curSearch;
}
}
});
window.addEventListener("popstate", function(e) {
if (e.state) {
table.fnFilter(e.state.query);
}
});
});
注意,我使用的是 rails 后端,这是页面中提供的内联 javascript。
【问题讨论】:
标签: javascript jquery datatables html5-history