Facebook聊天框不会在页面之间重新加载

时间:2013-03-24 09:46:34

标签: javascript ajax facebook html5-history

我在Facebook上观察到这个功能,当你在右下方打​​开一个聊天框,然后你去另一个页面,比如你的朋友的个人资料,或Facebook内的一些照片收集页面时,聊天框不会重新加载,它保持原样(就像在背景页面顶部的单独层中一样)。

很自然地,我认为Facebook本身没有重新加载页面,它使用history.pushstate和相关函数异步加载内容,并动态更改URL(Firebug确认,如果你点击你的朋友的名字之一,并被带到你朋友的个人资料页面,它实际上是一个GET请求被解雇了)。因此,由于没有任何页面加载,因此聊天框可以暂时闲置。

但是,版本10之前pushstate不支持IE。但是,它在IE9中也可以正常工作。所以有人能告诉我他们是怎么做到的吗?他们是使用history API还是其他不同的东西?

1 个答案:

答案 0 :(得分:7)

这是一个简单回答的好问题。我不确定Facebook,但这应该对你有帮助 - History.js

  

History.js在所有浏览器中优雅地支持HTML5历史/状态API(pushState,replaceState,onPopState)。包括对数据,标题,replaceState的持续支持。支持jQuery,MooTools和Prototype。对于HTML5浏览器,这意味着您可以直接修改URL,而无需再使用哈希。对于HTML4浏览器,它将恢复使用旧的onhashchange功能。