jquery .ready()函数等待多长时间?

时间:2012-01-23 07:49:23

标签: javascript jquery dom

我有一个页面,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并准备就绪。但我不确定凌如何等待。我试图看到它的文档,但无法清楚地找到它。

如何针对指定的情况解决这个问题?

3 个答案:

答案 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最后一个图像加载它运行的下一个毫秒