popstate 一直使用上次状态
popstate keeps using last state
当用户过滤品牌、类别等时,我得到了一个简单的代码。
一切正常。
但是当你想返回两次时,第一个 popstate returns 最后一页是完美的。但是当你再次返回时,它仍然是 returns 最后一页,所以它会再次加载它。而不是那一页之前的那一页。
我的一段代码:
推送状态
var params = $('fme_layered_params').value.parseQuery();
// Object { cat="274", dir="desc"}
if (!params['dir'])
{
$('fme_layered_params').value += '&dir=' + 'desc';
}
if(window.location.href.indexOf('?') > -1){
var u = window.location.href.split("?");
var url = u[0]+"?"+$('fme_layered_params').value;
}else
var url = window.location.href+"?"+$('fme_layered_params').value;
window.history.pushState($('fme_layered_params').value, 'link', url);
弹出状态
window.onpopstate = function(e) {
if(e.state!==null){
var state = e.state;
state = state.split("&");
// ["cat=272", "dir=desc"]
jQuery.each(state, function(i,v){
var info = v.split('=');
fme_layered_add_params(info[0], info[1], 1);
});
fme_layered_make_request();
}
};
我做错了什么?
提前致谢!
我解决了这个问题。
每次我回去时,它也会推送当前页面。所以我回去,同一页面被推送到历史记录中,导致该特定页面无休止地重新加载。
TL;DR?
检查、仔细检查、三重检查您的代码如何 'walks' 通过这些行。
当用户过滤品牌、类别等时,我得到了一个简单的代码。 一切正常。
但是当你想返回两次时,第一个 popstate returns 最后一页是完美的。但是当你再次返回时,它仍然是 returns 最后一页,所以它会再次加载它。而不是那一页之前的那一页。
我的一段代码:
推送状态
var params = $('fme_layered_params').value.parseQuery();
// Object { cat="274", dir="desc"}
if (!params['dir'])
{
$('fme_layered_params').value += '&dir=' + 'desc';
}
if(window.location.href.indexOf('?') > -1){
var u = window.location.href.split("?");
var url = u[0]+"?"+$('fme_layered_params').value;
}else
var url = window.location.href+"?"+$('fme_layered_params').value;
window.history.pushState($('fme_layered_params').value, 'link', url);
弹出状态
window.onpopstate = function(e) {
if(e.state!==null){
var state = e.state;
state = state.split("&");
// ["cat=272", "dir=desc"]
jQuery.each(state, function(i,v){
var info = v.split('=');
fme_layered_add_params(info[0], info[1], 1);
});
fme_layered_make_request();
}
};
我做错了什么?
提前致谢!
我解决了这个问题。
每次我回去时,它也会推送当前页面。所以我回去,同一页面被推送到历史记录中,导致该特定页面无休止地重新加载。
TL;DR?
检查、仔细检查、三重检查您的代码如何 'walks' 通过这些行。