Javascript 如何设置“的持续时间”;“加载微调器”;,基于加载的内容
我已经为我的动态网站加载了“animation.gif”。这是我在jquery中用来显示和隐藏微调器的代码:Javascript 如何设置“的持续时间”;“加载微调器”;,基于加载的内容,javascript,jquery,ajax,Javascript,Jquery,Ajax,我已经为我的动态网站加载了“animation.gif”。这是我在jquery中用来显示和隐藏微调器的代码: $("#loading").bind("ajaxSend", function(){ $(this).show(); }).bind("ajaxComplete", function(){ $(this).hide(); }); 我的问题: 该网站有不同的内容(如flash、图像、文本等)。因此,网站的某些部分比其他部分需要更长的加载时间。但是加载动画的持续时间总是
$("#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')
,则隐藏加载gif.length
希望有帮助 您知道哪些元素加载较慢,有多少个元素,您是否可以控制页面?您应该将.hide()事件绑定到body/img/flash中的.load()之类的内容stuff@AMember(闪光)是的,我在控制中。@Onheiron有道理,代码是什么样子的?(不幸的是,我只是一个差劲的设计师):(已经添加了另一个可能的解决方案…不太好,但可能会起作用。这个答案有点不错,但我会删除该间隔循环,并在每次加载元素时检查列表是否完整。谢谢,但我在测试此解决方案时没有收到警报。是否有工作示例?可能我做得不对。例如,这就起作用了。)(仅适用于图像):
$(“#image_ID”).load(函数(){alert(“对象加载(可能)。”)});