1

我正在调试一大段 javascript,并且无法弄清楚浏览器后退按钮发生了什么,因为它与 pushState() 和 replaceState() 相关。我有以下原型方法:

    SolrUrl.prototype.storeQueryObject = function(data) {

    var newUrl = window.location.protocol
        + "//"
        + window.location.host
        + window.location.pathname
        + "?"
        + $.param(data);

    // window.history.pushState(newUrl);

    window.history.pushState({
        path: newUrl
    }, "", newUrl);
};

我有一个分面搜索,允许我进行多级过滤。上面的工作是因为它允许我过滤不同的查询并使用后退按钮返回到以前的过滤器,但是一旦我回到搜索的初始状态,我就不能使用浏览器的“后退”按钮。例如,如果我去 google.com -> mysite.com -> 然后将我的搜索过滤到“组件”,我可以使用返回按钮回到 mysite.com 的初始状态,但不能使用它来返回 google.com。

我可以通过将 pushState 更改为 replaceState 来部分解决这个问题,但这不允许我使用后退按钮返回过滤器状态。例如,在上述函数中使用 replaceState 时。如果我转到 google.com -> mysite.com -> 过滤“组件”-> 过滤器 ->“组件类型”并点击后退按钮,它会将我带回 mysite.com。我究竟做错了什么?如何使浏览器的后退按钮通过过滤器状态以及以前的网址返回?

4

0 回答 0