gpt4 book ai didi

ajax - "Redirect"页面没有刷新(Facebook 照片样式)

转载 作者:行者123 更新时间:2023-11-30 05:16:37 25 4
gpt4 key购买 nike

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

例如,当您单击“下一步”时,您会注意到页面不会刷新 - 只有内容。起初我认为它是使用普通的 ajax 调用完成的,在这种情况下只刷新“内容”图像、描述和评论。但后来我注意到浏览器“位置”工具栏中的 URL 也发生了变化!我尝试使用 Firebug 对此进行检查,发现当您单击“下一步”时,只会下载下一张照片,而且我仍然不知道从何处加载评论和图像元数据(描述、时间、标签...) .

谁能解释一下这项技术是如何实现的——页面 URL 更改而无需页面刷新(或者如果从缓存中刷新,页面甚至不会“闪烁”)。我知道如何使用 ajax 更改页面内容,但该页面的 URL 始终保持不变。如果我点击“刷新”按钮,我会再次获得第一页。但不是在 Facebook 上,因为即使“window.location”每次都在没有实际重定向的情况下发生变化。

我注意到的另一件事是底部的工具栏(应用程序、聊天...)“始终在顶部”。即使您更改页面,此工具栏也不会刷新并始终保持在顶部 - 它甚至不会像其他刷新的页面一样“闪烁”(来自网络服务器或本地缓存)。我猜这是与上述相同的技术 - 某种“假”重定向或其他什么?

答案是 pushState

if (window.history.pushState)
window.history.pushState([object or string], [title], [new link]);

你会微笑:)

最佳答案

我尝试通过 facebook 图片进行更改,这是我看到的:

在 Firefox 中:

页面 URL 没有改变。只有哈希在变化。 This is a technique used to allow crawlers to index the content .这是怎么回事:

  • 用户点击“下一步”
  • JS 加载带有标签、评论等的下一张图片,并用它们替换旧内容。
  • JS 更改哈希以对应新图像

网址如下所示: http://www.facebook.com/home.php?#!/photo.php?fbid=1550005942528966&set=a.1514725882151300.28042.100000570788121&pid=3829033&id=1000001570788121(注意哈希)

至于第二个问题,这只是上述技术的一个好处。当你在 facebook 上时,页面很少会真正刷新。仅更改哈希,以便您可以将链接发送给其他人,爬虫可以为内容编制索引。

在谷歌浏览器中:

chrome 似乎有一些方法可以在不刷新页面的情况下更改 url。它通过使用 window.history.pushState 来做到这一点。了解一下 here .

网址如下所示:http://www.facebook.com/photo.php?fbid=1613802157224343&set=a.1514725288215100.28042.1000005707388121&pid=426541&id=1000001570788121 (注意这里没有散列,但 url 仍然随着图像而变化)

Epiphany :

Epiphany 不会在图片更改时更改 URL。

网址如下所示:http://www.facebook.com/photo.php?fbid=1441817122377521&set=a.1514725882215100.28042.1000005707848121&pid=3251944&id=1000200570788121 (没有哈希,并且更改图像时 URL 保持不变)

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

关于ajax - "Redirect"页面没有刷新(Facebook 照片样式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4049644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com