【问题标题】:popstate keeps using last statepopstate 继续使用最后一个状态
【发布时间】:2016-04-22 11:58:15
【问题描述】:

当用户过滤品牌、类别等时,我得到了一个简单的代码。 一切正常。

但是,例如,当您想要返回两次时,第一个 popstate 会完美地返回最后一页。但是当你再次返回时,它仍然返回最后一页,所以它再次加载它。而不是前一页。

我的一段代码:

推送状态

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();
    }
};

我做错了什么?

提前致谢!

【问题讨论】:

  • if(e.state!==null)onpopstate 事件函数处理程序中的提议是什么?
  • Safari 在页面完全加载时有调用 onpopstate 的冲动。所以,为了防止我检查状态是否已经定义。

标签: browser-history html5-history popstate


【解决方案1】:

我解决了这个问题。
每次我回去它也推当前页面。所以我回去了,同一页面被推送到历史记录中,导致该页面无休止地重新加载。

TL;DR
检查、仔细检查、三次检查您的代码如何“遍历”这些行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-25
    • 1970-01-01
    相关资源
    最近更新 更多