Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery加载时间问题_Javascript_Jquery - Fatal编程技术网

Javascript jquery加载时间问题

Javascript jquery加载时间问题,javascript,jquery,Javascript,Jquery,我在让jQuery&Bootstrap.js加载并正常运行方面遇到了问题。我可以把它们放在标题中,它们工作得很好,但我有一个“母版页”,在上面加载3个子表单。因此,在每个表单上,我需要确保jQuery&Bootstrap.js已加载,但我不能让它们重新加载,否则会导致问题 因此,我创建了一个JSFIDLE,我使用它来确保jQuery在检查bootstrap.js是否加载之前加载,如果没有加载,则加载。问题在于,jQuery检查之后的代码似乎在jQuery完成加载之前执行,尽管试图延迟以确保它不会

我在让jQuery&Bootstrap.js加载并正常运行方面遇到了问题。我可以把它们放在标题中,它们工作得很好,但我有一个“母版页”,在上面加载3个子表单。因此,在每个表单上,我需要确保jQuery&Bootstrap.js已加载,但我不能让它们重新加载,否则会导致问题

因此,我创建了一个JSFIDLE,我使用它来确保jQuery在检查bootstrap.js是否加载之前加载,如果没有加载,则加载。问题在于,jQuery检查之后的代码似乎在jQuery完成加载之前执行,尽管试图延迟以确保它不会执行

代码如下:

if(typeof jQuery=='undefined') {
    var headTag = document.getElementsByTagName("head")[0];
    var jqTag = document.createElement('script');
    jqTag.type = 'text/javascript';
    jqTag.src = '//code.jquery.com/jquery-2.0.3.min.js';
    jqTag.onload = myJQueryCode;
    headTag.appendChild(jqTag);
} else {
    alert('You are here')
    myJQueryCode();
}
function yourFunctionToRun(){
    //Your JQuery goodness here
}

function runYourFunctionWhenJQueryIsLoaded() {
    if (window.$){
        //possibly some other JQuery checks to make sure that everything is loaded here
        myJQueryCode();
    } else {
        setTimeout(function() {runYourFunctionWhenJQueryIsLoaded()}, 50);
    }
}

runYourFunctionWhenJQueryIsLoaded();
if(typeof jQuery=='undefined') {
    alert('Houston we have a problem');
}
这是你的电话号码

根据这一点,警报窗口永远不应该打开,因为它应该在jQuery加载之后才能打开


任何帮助都将不胜感激。

您应该检查依赖关系管理或模块框架,如requirejs,这是一个接近CommonJS规范的实现。即使您没有按原样实现它,你可能会从他们的代码中学到足够多的知识来解决你的问题。显然,你没有阅读你从中复制代码的其余答案。您正在异步加载jQuery,因此当您的if语句执行时,您仍处于加载过程中。想到使用另一个框架,我很不舒服。让Bootstrap和jQuery框架配合得很好让我抓狂。因此,添加另一个似乎不太可能。我是“老派”,更喜欢自己编写所有代码,但我正在努力进化到至少常见的Bootstrap&jQuery-one.mambrow——我试图保持jsfiddle的简单性。首先在.onload函数上触发的myJQueryCode函数内部发生的情况是:$document.readyfunction{//现在已经加载了jquery-load bootstrap iftypeof popover!=='function'{loadJSfile.././包括/js/bootstrap.js;}}这会失败,因为$document.readyfunction上没有定义${除非我错了,否则这是因为jQuery尚未完全加载。另外,在JSFIDLE中-代码是否应该在NjQueryLoaded之前等待delay函数RunyourFunctionWhenjQueryLoaded的完成?因此,在识别到jQuery已加载之前,它不应该发出警报。