我正在尝试开发一个搜索过滤器并利用 HTML5 历史 API 来减少发送到服务器的请求数量。如果用户选中一个复选框以应用某个过滤器,我会将该数据保存在历史状态中,这样当用户取消选中它时,我就可以从历史中加载数据,而不是从服务器再次获取它。
当用户选中或取消选中过滤器时,我正在更改窗口 URL 以匹配设置的过滤器,例如,如果用户尝试仅过滤某个类别的汽车品牌,我会更改 URL,例如“cars?filter-brand[] =1'。
但是当应用多个过滤器时,我无法确定是从服务器加载数据还是从历史记录加载数据。
目前我正在使用以下代码。
pushString variable is the new query string that will be created.
var back = [],forward = [];
if(back[back.length-1] === decodeURI(pushString)){ //check last back val against the next URL to be created
back.pop();
forward.push(currentLocation);
history.back();
return true;
}else if(forward[forward.length-1] === decodeURI(pushString)){
forward.pop();
back.push(currentLocation);
history.forward();
return true;
}else{
back.push(currentLocation); //add current win location
}