使用pushstate返回导航并在jQuery中加载

时间:2012-04-19 19:31:57

标签: javascript jquery

我目前正在使用jQuery将内容动态加载到holder 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更改为上一个,但没有其他任何事情发生。

我的网页构建方式可以让你使用带有jQuery的网站加载没有标题的内容,或者没有任何javascript和页面从他们的网址显示,所以这部分没有问题。

有没有办法可以在后台导航上使用加载来加载最后的状态历史记录?我宁愿不使用哈希但不确定是否可以没有哈希?

如果有帮助的话,Facebook似乎会通过导航来做到这一点吗?

2 个答案:

答案 0 :(得分:1)

https://developer.mozilla.org/en-US/docs/DOM/window.onpopstate

如果您不想使用pjax,此链接将为您提供帮助。

答案 1 :(得分:0)

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

但是为什么不使用jquery-pjax来解决别人的问题。

一旦你包含了pjax脚本,可能以下就足够了:

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

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