我在 Facebook 中观察到了这个功能,当你在右下角打开了一个聊天框,然后你转到另一个页面,比如你朋友的个人资料,或者 Facebook 中的某个照片集页面,聊天框不会重新加载,它保留在原处(就像在背景页面顶部的单独层中一样)。
所以很自然地,我认为 Facebook 本身并没有重新加载页面,它使用history.pushstate
和相关的功能来异步加载内容,并动态更改 URL(Firebug 证实了这一点,如果你点击一个朋友的名字并被带走到您朋友的个人资料页面,它实际上是一个GET
被触发的请求)。因此,由于没有任何页面加载,聊天框可以闲置,就这样。
但是,在版本 10 之前pushstate
不支持IE
。不过,它也可以正常工作IE9
。那么谁能告诉我他们是怎么做到的?他们是在使用history
API,还是使用不同的东西?