0

我目前正在使用 jQuery 将内容动态加载到持有者 div 中,然后使用 pushstate 更新 url。

到目前为止,我有以下代码(例如简单性排除了一些代码):

$("body").on("click", "a:not(.noclick)", function(){

    history.pushState({path: $(this).attr("href")}, "", $(this).attr("href"));

    $("#main").load($(this).attr("href"));

    return false
});

它按预期工作,并且 url 更改为在新内容加载时应该是什么,但返回按钮当前不起作用,当按下返回时,url 更改为前一个但没有其他任何反应。

我的页面以一种方式构建,您可以使用带有 jQ​​uery 的站点来加载没有标题或没有任何 javascript 的内容,并且页面从它们的 url 显示,所以这部分没有问题。

有没有办法可以使用后退导航加载来加载最后的 pushstate 历史记录?我宁愿不使用散列,但不确定是否可以不使用?

如果这有帮助,Facebook 似乎会用他们的导航来做到这一点?

4

1 回答 1

0

您需要一个popstate事件处理程序。

但是为什么不通过使用jquery-pjax来解决这个问题。

包含 pjax 脚本后,以下内容可能就足够了:

$(function() {
  $("a:not(.noclick)").pjax("#main", { fragment: "#main" });
});

这种特殊用法不需要​​任何服务器处理来删除非#main内容,但 pjax 也支持您引用的部分内容。

于 2012-04-21T02:30:24.057 回答