jQuery Window从函数内部调用时不加载

时间:2014-02-14 10:49:16

标签: javascript jquery

使用jQuery,以下内容将记录浏览器下载DOM和所有资产后应用程序已加载的内容:

$(window).load(function() {

    console.log('app loaded');

});

但是我不希望这个检查在其他一些事情发生之后才会发生。

例如:

function checkLoaded()
{           
    $(window).load(function() {

        console.log('app loaded');

    });
}

所以,假设我在一系列其他函数之后调用了这个函数。

问题是,因为$(window).load(function()是一个事件监听器,当我调用checkLoaded()函数时,事件将不会一直运行(因为它可能已被触发,因为所有内容都已经下载到{ {1}}函数已运行)。

关于我如何做到这一点的任何想法?

我试过了:

checkLoaded()

但问题在于checkLoaded函数COULD会在几秒钟内被调用数百次,并且不是处理此问题的好方法。

UPDATE:使用checkLoaded()调用该函数;大家都知道我在调用这个函数!

更新2:

该计划基本上是这样的:

function checkLoaded()
{           
    if(loaded)
    {
        console.log('app loaded');
    }
    else
    {
        checkLoaded(); // keep checking until the loaded becomes true
    }
}

$(window).load(function(){

    loaded = true;

});

所以我应该能够知道loaded的状态是否为true,但是一直检查它是否为真,因为当我进入检查阶段时它可能是真或假。

5 个答案:

答案 0 :(得分:4)

您可以在窗口加载时运行它,或者如果已经使用这种代码完成它:

function onLoad(loading, loaded) {
    if (document.readyState === 'complete') {
        return loaded();
    } 
    loading();

    if (window.addEventListener) {
        window.addEventListener('load', loaded, false);
    } else if (window.attachEvent) {
        window.attachEvent('onload', loaded);
    }
}

onLoad(function() {
    console.log('I am waiting for the page to be loaded');
}, function() {
    console.log('The page is loaded');
});

答案 1 :(得分:1)

var loaded=false;
$(window).load(function() {
    loaded=true;
});
function checkLoaded()
{
     // do something if loaded===true 
}

答案 2 :(得分:0)

试试这个

function checkLoaded()
{           
    $(window).load(function() {

        console.log('app loaded');

    });
}
checkLoaded();

答案 3 :(得分:0)

你想制作checkLoaded块,这是一个坏主意:

javascript没有线程和阻塞,只会烧掉CPU,同时可能阻塞整个脚本。

不要像你所做的那样等待加载为真。使用eventhandler来使用它。

可能会将checkLoaded参数提供给您想要调用的函数:

function checkLoaded(continueWhenLoaded) {
     $(window).load(function() {
         continueWhenLoaded();
     });
}

答案 4 :(得分:0)

您是否考虑过涉及jQuery的.promise().done()的解决方案?查看文档中的一些示例,它可能就是您要查找的内容。