我有一个页面,php将输出一个相当大的div,里面有很多组件。处理该div的JS几乎是瞬间开始的,但是存在与加载bigDiv和处理它的脚本相关的时序问题。
所以,我应用了这样的代码来处理ready()
var bigDiv = $(document).find('#bigDiv');
bigDiv.ready(function{
//some code here
});
现在我的问题是,如果bigDiv
需要很长时间才能显示,ready()
功能等待多长时间?如果bigDiv
完全没有出现怎么办?
为了避免脚本等待它,我应用了一个超时,
因此我选择了另一种方法:
var waitTimer = 0;
var lodTmout = 2000;
function chkDataLod(){
var bigDiv = $pH(document).find('#bigDiv');
if(bigDiv.length > 0){//find if bigDiv has content
bigDiv.ready(function(){//wait for bigDiv to load it's contents completely
//some code here
});
}else{
//chk for bigDiv after every 500 msec for 2000 msec
if(waitTimer === lodTmout){
return false;
}else{
waitTimer += 500;
setTimeout('chkDataLod();',500);
}
}
};
function _init(){
chkDataLod();
}
_init();
最初我试着看看bigDiv的内容长度是否大于零。显示“未完全加载”的bigDiv时出现问题。所以我再次添加了.ready()
函数。我在bigDiv上有一些动画功能,在完全加载之前我不想启动它。
此bigDiv
从CDN加载,因此加载时序会有所不同。有一天它加载了将近5秒钟。看到我自己的方法,我知道它有问题。我正在使用setTimeout并准备就绪。但我不确定凌如何等待。我试图看到它的文档,但无法清楚地找到它。
如何针对指定的情况解决这个问题?
答案 0 :(得分:1)
最简单的方法是在元素的结束标记之后运行代码。 喜欢这个
<div id='bigDiv>....</div>
<script>
// do whatever you want to do with div
</script>
ps:或者您可以尝试访问div之后的任何元素,并且有一些间隔。如果它存在 - 你的div准备好了。
答案 1 :(得分:0)
这取决于客户端互联网的速度有多快,bigDiv中的内容有多大,以及客户端计算机的速度有多快。
答案 2 :(得分:0)
尝试添加脚本标记的第一行
var d = new Date(); console.log(d.getTime());
在jquery ready函数之后添加相同的东西,并参见
这次使用页面加载时间
并且你会注意到ASA最后一个图像加载它运行的下一个毫秒