gpt4 book ai didi

javascript - 从函数内部调用时,jQuery Window Load 不触发

转载 作者:行者123 更新时间:2023-11-30 08:46:17 24 4
gpt4 key购买 nike

使用 jQuery,一旦浏览器下载了 DOM 和所有 Assets ,以下内容将记录应用程序已加载:

$(window).load(function() {

console.log('app loaded');

});

但是我不希望在其他一些事情运行之前进行此检查。

例如:

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

console.log('app loaded');

});
}

假设我在一堆其他函数之后调用这个函数。

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

关于如何做到这一点有什么想法吗?

我试过这个:

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

$(window).load(function(){

loaded = true;

});

但这里的问题是 checkLoaded 函数可能会在几秒钟内被调用数百次,这不是处理此问题的好方法。

更新:该函数是使用 checkLoaded() 调用的;只是为了让每个人都知道我正在调用该函数!

更新 2:

计划基本上是这样的:

function init() {

start();

}();

function start() {

// Show Preloader... and other stuff

/// Once all logic has finished call checkLoaded

checkLoaded();

}

function checkLoaded() {

if(loaded) {

show();

}

}

function show() {

... // show app

}

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

最佳答案

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

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');
});

关于javascript - 从函数内部调用时,jQuery Window Load 不触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21777277/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com