Jquery 使用参数更新URL时Pjax后退按钮不工作

Jquery 使用参数更新URL时Pjax后退按钮不工作,jquery,pjax,Jquery,Pjax,当我使用一些参数(如?page=2)手动更新url时,pjax将无法识别它: window.history.replaceState(null,document.title,"?page=2"); 我也尝试过使用pjax $.pjax({url: "?page=2", container: (container || '#null'), replace: true, dontRequest: true}) (注意,我添加了dontRequest参数,因此我可以执行一个“伪”pjax调用,该调

当我使用一些参数(如?page=2)手动更新url时,pjax将无法识别它:

window.history.replaceState(null,document.title,"?page=2");
我也尝试过使用pjax

$.pjax({url: "?page=2", container: (container || '#null'), replace: true, dontRequest: true})
(注意,我添加了dontRequest参数,因此我可以执行一个“伪”pjax调用,该调用实际上不会触发.ajax,但仍然会更新url,但没有成功)

要在实时站点上复制此功能,请执行以下操作:

  • 转到(单击退出模式)
  • 向下滚动直到添加?p=2
  • 点击流行
  • 在浏览器中按back

  • 注意,什么也没发生。。。现在再按一次,你就会看到它工作了。这是因为我使用replaceState将URL更新为?p=2。我将如何使这项工作,使它认识到这些?参数。。。我试图定制pjax,但没有成功。

    在我看来,pjax只添加了路径,而没有向状态添加完整的url。这就是为什么你会遇到这个问题

    如果您使用的是Rails,那么一定要尝试Wiselinks。这是一把用于浏览器状态管理的瑞士军刀。以下是一些详细信息:


    Wiselinks可以更好地处理这一问题和其他许多情况。

    这是一个老问题,但我会为碰巧来到这里的任何人提供答案,就像我一样

    在页面上手动使用pushState或replaceState时,Pjax无法完美工作。当它遇到这种状态时,它什么也不做。所以,当您按后退/前进按钮进入这样一个页面时,pjax:popstate事件不会触发,也不会发生任何事情

    解决方法是使用$.pjax.state作为pushState和replaceState的状态对象参数

    history.pushState($.pjax.state, null, href)
    

    github中存在一些与此问题相关的问题: ,

    history.replaceState($.pjax.state, null, href)