我在页面上有一个对象,表示我需要使用要添加以下功能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。