Javascript 如何设置“的持续时间”;“加载微调器”;,基于加载的内容

Javascript 如何设置“的持续时间”;“加载微调器”;,基于加载的内容,javascript,jquery,ajax,Javascript,Jquery,Ajax,我已经为我的动态网站加载了“animation.gif”。这是我在jquery中用来显示和隐藏微调器的代码: $("#loading").bind("ajaxSend", function(){ $(this).show(); }).bind("ajaxComplete", function(){ $(this).hide(); }); 我的问题: 该网站有不同的内容(如flash、图像、文本等)。因此,网站的某些部分比其他部分需要更长的加载时间。但是加载动画的持续时间总是

我已经为我的动态网站加载了“animation.gif”。这是我在jquery中用来显示和隐藏微调器的代码:

$("#loading").bind("ajaxSend", function(){
   $(this).show();
 }).bind("ajaxComplete", function(){
   $(this).hide();
 });


我的问题: 该网站有不同的内容(如flash、图像、文本等)。因此,网站的某些部分比其他部分需要更长的加载时间。但是加载动画的持续时间总是相同的(太快了)。当我加载带有flash(4mb)和html文本的内容时,微调器隐藏得太快,内容仍在加载。HQ图像也是如此

我可以使用最小延迟,比如:

$("#this").delay(600).fadeOut("slow");
但我认为这根本不是一个好的解决方案。
在加载整个内容之前,如何才能不隐藏加载微调器?

您可以为页面中所有缓慢加载的元素创建一个标记列表

然后开始收听每个元素加载事件(您也可以使用flash)

每次加载元素时,升起其标志

在监视此列表的后台运行间隔,一旦所有列表项都被提升,请移除加载微调器

您也可以尝试以下方法:

var iv = setInterval(function () {
    if (document.all["theObject"].readyState == 4) {
        clearInterval(iv)
        alert("Object loaded (maybe).")
    }
}, 100)
摘自:


通过Orc Scorcher

从您链接到的页面,只需绑定到
ajaxStart
ajaxStop
,它们具有所需的内置逻辑,并且仅在任何组中的第一个AJAX请求以及最后一个AJAX请求完成时触发

或者,您可以使用自己的计数器来计算有多少AJAX请求未完成:

(function(sel) {
    var count = 0;

    $(sel).bind("ajaxSend", function() {
        if (count++ === 0) {
            $(this).show();
        }
    }).bind("ajaxComplete", function() {
        if (--count === 0) {
            $(this).hide();
        }
    });
})('#loading');
好的,我试过了,希望就是你想要的

基本上:

  • 为希望加载程序等待的每个元素指定一个
    .content
  • 使用jQuery/AJAX动态设置内容src
  • $('.content')
    元素绑定到
    .load()
    事件
  • 激发
    .load()
    时,增加一个计数器,如果计数器等于
    $('.content')
    选择器的
    .length
    ,则隐藏加载gif
从大约:

此事件可以发送到与URL关联的任何元素:图像、脚本、帧、iFrame和窗口对象

因此,它应该可以很好地处理您的懒惰内容


希望有帮助

您知道哪些元素加载较慢,有多少个元素,您是否可以控制页面?您应该将.hide()事件绑定到body/img/flash中的.load()之类的内容stuff@AMember(闪光)是的,我在控制中。@Onheiron有道理,代码是什么样子的?(不幸的是,我只是一个差劲的设计师):(已经添加了另一个可能的解决方案…不太好,但可能会起作用。这个答案有点不错,但我会删除该间隔循环,并在每次加载元素时检查列表是否完整。谢谢,但我在测试此解决方案时没有收到警报。是否有工作示例?可能我做得不对。例如,这就起作用了。)(仅适用于图像):
$(“#image_ID”).load(函数(){alert(“对象加载(可能)。”)});