加载数据时浏览器忙指示

时间:2012-03-27 03:03:00

标签: javascript ajax iframe

我正在努力实现已解释过的here

我正在尝试使用动态脚本标记从服务器向客户端加载一些数据。 (即我创建一个脚本标记,将其src设置为我的JSON控制器并将其附加到我的头部或身体标记)。

脚本正确加载从服务器返回的数据。但在脚本加载期间, 浏览器不显示忙碌指示符(尝试使用Chrome / Firefox)(根据this reference(第35页),这应该是默认行为)。

此外,我已将Sleep方法添加到我的服务器端方法以模拟长时间运行的进程,以查看忙指示符。但仍然没有运气。

P.S。当我使用IFrame而不是script时,一切正常,繁忙的指标由浏览器显示。但是不能用脚本标签来做。

2 个答案:

答案 0 :(得分:2)

简而言之:

facebook在加载页面数据时会使用iframe,浏览器加载指示器没什么神奇之处。


更多详情:

当你从一个页面导航到另一个页面时,FB会将一个隐藏的Iframe注入到DOM中,并且它的src属性将被设置为你要求的页面(有几个参数表明这是一个类似ajax的请求,而不是整页刷新)。因此页面实际上被加载到隐藏的iframe中。但是,内容不是HTML,而是一堆javascript标记,它使用一些包含HTML和呈现页面所需的其他数据的JSON对象。
当iframe注入DOM时,下面是从我的firebug控制台加载页面时。您可以检查页面加载完成后,iframe将被删除。

facebook hidden iframe

要了解这些脚本如何加载页面数据,您可以阅读BigPipe Technique。简而言之,它将每个页面的构建分解为几个所谓的 pagelet ,它们拥有自己的CSS和JS资源集,因此每个pagelet的资源都是如此可以从服务器并行获取其他小页面。 <{1}}将设置在其所有资源可用后将每个pagelet放入其容器中。

答案 1 :(得分:1)

在网页上异步加载组件不会在非IE浏览器中触发浏览器的购买图标。对Facebook也是如此。尝试喜欢一些帖子或在墙上写一些东西,这些动作都不会在非IE浏览器中显示浏览器的购买图标。