在ajax调用上显示*浏览器*加载指示符(如发生回发时)

Kam*_*yar 9 browser ajax loading xmlhttprequest

例如:转到您的Facebook墙,滚动页面末尾,Facebook将异步加载更多墙上的帖子.或者只需点击墙贴中的图像即可.图像对话框(带有注释和更大的图像)也是异步加载的.(您可以使用firebug查看GET请求).

但通过查看和firefox选项卡,您可以看到加载指示器,就像发生回发时一样.

我知道这可以通过使用IFrame和更改其src 来实现.就像iGoogle一样.但我不确定Facebook是否使用IFrame来加载额外的墙贴.还有另一种方法来实现这一目标吗?

更新:通过说"加载指标"我并不是指ajax指标.
正如我所提到的那样,浏览器指示器(显示我们页面是否正在加载的选项卡的左侧一个)更改为加载,就像它是一个回发.

Aza*_*ade 6

不是AFAIK.我的猜测是他们可能将IFrame src设置为ajax方法,并在加载时将内容移动到div(或其他元素).


fre*_*nte 6

可以使用iframe完成.简而言之,您附加一个隐藏的iframe:

var $loadingIndicator = $('<iframe src="/loading/" class="visuallyhidden">');
$loadingIndicator.appendTo('body');
Run Code Online (Sandbox Code Playgroud)

它必须加载一个停止,永不加载的页面.可能在网站自己的域上,因为浏览器实际显示waiting for domainname.com在状态栏中.

domainname.com/loading/index.php你输入的文件中:

<?php sleep(100);
Run Code Online (Sandbox Code Playgroud)

完成后删除iframe:

$loadingIndicator.remove();
Run Code Online (Sandbox Code Playgroud)

考虑到这实际上是一个额外的请求,这并不理想.原因如下:

  • 您的服务器会有长时间的请求,可能会对性能产生影响
  • 浏览器将使用少数可用的并发连接之一,因此可能减慢加载的任何内容
  • 在我的情况下它会使动画断断续续(Chrome 27/OSX,requestAnimationFrame).

通过缓慢加载技术
通过/sf/answers/220208831/