Facebook 中的 URL 更改 ajax 调用

Posted

技术标签:

【中文标题】Facebook 中的 URL 更改 ajax 调用【英文标题】:URL change ajax call in Facebook 【发布时间】:2011-06-03 15:58:27 【问题描述】:

在 facebook 中,每当您导航到不同的 URL 时(在某些情况下),该 URL 都会发生变化,但不会感觉到转到不同的页面。

例如:当我们在 facebook 中查看图片时,当我们移动到下一张图片时,地址栏中的 URL 会发生变化

FROM >facebook.com/foo?bar=foobar&xxxx=

TO > >>facebook.com/foo?bar=boobar&xxxx=

这也不是散列变化 喜欢

FROM >facebook.com/xxxxx#xxx=xxxx

到 > >>facebook.com/xxxxx#xxx=yyyy

这怎么可能无缝。我的意思是如何在 URL 更改时只修改一个容器。 URL 更改应该导航到一个不同的页面,该页面可以包含来自前一页的缓存信息,并且通过浏览器的屏幕变为空白片刻,可以清楚地看到通过 URL 更改进行的这种导航。

如果使用 iFrame,如何实现?

【问题讨论】:

他们正在使用 html5 History API。 【参考方案1】:

我使用类似的东西

try 
  var stateObj =  foo: "bar" ;
  history.pushState(stateObj, "page", href);
  loadPage(href);

catch(e) 
  window.location.hash = "#!/"+href;

如果它支持 HTML5 pushState,它们会更改 URL,但如果不支持,则回退是窗口哈希。

【讨论】:

【参考方案2】:

哇。我几分钟前刚问过...下次使用搜索 ;)

Dynamic favicon when I'm proccessing ajax data

Modify the URL without reloading the page

【讨论】:

***.com/questions/824349/…【参考方案3】:

有一个名为“address”的 jQuery 插件,它将监视更改并调用您提供的函数。我认为它只是每 100 毫秒左右检查一次 URL。

【讨论】:

【参考方案4】:

他们为完成“导航”所需的数据发出 AJAX 请求,然后告诉浏览器“转到#xxx=yyy”。由于这样的锚点不存在,浏览器实际上并没有向下滚动。但是,它确实会记录一个新的历史条目,并且还会更新 URL,因此如果有人复制粘贴该 URL,他们将查看用户正在查看的同一对象,而不仅仅是原始页面。

【讨论】:

以上是关于Facebook 中的 URL 更改 ajax 调用的主要内容,如果未能解决你的问题,请参考以下文章

浏览器后退按钮的 IE9 中 url 中的哈希更改

如何使用 hashbang url 处理 Facebook 分享/点赞?

Facebook 如何在不重新加载页面或使用 # 或的情况下更改浏览器地址栏中的 URL?

facebook的内容是动态加载的吗?

如何更改浏览器网址框中的网址?

URL 更改后的 Facebook 社交插件评论