关于ajax:”重定向”页面不刷新(Facebook照片样式)

“Redirect” page without refresh (Facebook photos style)

我正在尝试实现内容浏览,就像用户浏览照片时在Facebook上所做的一样。我想每个人都熟悉该照片浏览,您可以单击"下一个"和"上一个"并立即获取下一张或上一张照片(也可以使用箭头键进行导航)。

例如,当您单击"下一步"时,您会注意到页面没有刷新-仅刷新内容。最初,我认为使用纯ajax调用完成此操作,这种调用仅刷新"内容",在这种情况下为图像,描述和注释。但是后来我发现浏览器的"位置"工具栏中的URL也被更改了!
我尝试使用Firebug进行检查,发现当您单击"下一步"时,仅下载了下一张照片,而我仍然不知道评论来自何处


我尝试通过facebook图像进行更改,这就是我看到的内容:

在Firefox中:

页面URL不变。只有哈希在变化。这是一种允许爬网程序为内容编制索引的技术。这是什么情况:

  • 用户点击"下一步"
  • JS使用标签,注释等加载下一张图像,并用它们替换旧内容。
  • JS更改哈希值以对应新图像

网址看起来像这样:
http://www.facebook.com/home.php?#!/photo.php?fbid=1550005942528966&set=a.1514725882151300.28042.100000570788121&pid=3829033&id=1000001570788121(注意哈希值)

对于第二个问题,这只是上述技术的一个好处。当您在Facebook上时,实际上很少刷新页面。仅更改哈希值,以便您可以将链接发送给其他人,并且爬网程序可以为内容编制索引。

在Google Chrome浏览器中:

似乎chrome可以通过某种方式更改网址而无需刷新页面。它通过使用window.history.pushState来实现。在这里阅读。

URL看起来像这样:http://www.facebook.com/photo.php?fbid=1613802157224343&set=a.1514725288215100.28042.1000005707388121&pid=426541&id=1000001570788121(注意这里没有哈希,但是URL随图像一起变化)

顿悟中:

当图像更改时,主显节不会更改URL。

URL看起来像这样:http://www.facebook.com/photo.php?fbid=1441817122377521&set=a.1514725882215100.28042.1000005707848121&pid=3251944&id=1000200570788121(没有哈希,并且更改图像时URL保持不变)

(目前没有其他浏览器可以验证)


此处未提及的一种技术是他们可能使用过的window.onhashchange()方法(在ie8和其他大多数语言中受支持)。


您可能会注意到页面URL保持不变。但是,更改的是页面哈希(网址中#后面的部分)。

您需要这样的内容:http://code.google.com/p/reallysimplehistory/