错误:引导';的JavaScript需要jQuery

错误:引导';的JavaScript需要jQuery,javascript,jquery,twitter-bootstrap,Javascript,Jquery,Twitter Bootstrap,因此,我正在开发一个简单的javascript小部件,并通过下面的教程启动。我正在动态加载jquery,如下所示: if (window.jQuery === undefined || window.jQuery.fn.jquery !== '2.1.4') { 更新,下面是我加载jQuery的方式 var script_tag = document.createElement('script'); script_tag.setAttribute("type", "text/j

因此,我正在开发一个简单的javascript小部件,并通过下面的教程启动。我正在动态加载jquery,如下所示:

if (window.jQuery === undefined || window.jQuery.fn.jquery !== '2.1.4') {
更新,下面是我加载jQuery的方式

var script_tag = document.createElement('script');
        script_tag.setAttribute("type", "text/javascript");
        script_tag.setAttribute("src",
            "https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js");
 document.documentElement).appendChild(script_tag);        

//Once loaded load other javascripts
if (this.readyState == 'complete' || this.readyState == 'loaded') {

    scriptLoadHandler();

  }
}
以下是我的
scriptLoadHandler
函数:

function scriptLoadHandler() {

        // Restore $ and window.jQuery to their previous values and store the
        // new jQuery in our local jQuery variable
        jQuery = window.jQuery.noConflict(true);
        // Call our main function
        main();
    }     
现在,在main方法中,我尝试像这样加载引导js:

    function main() {

        console.log("undefined" == typeof jQuery);

        var head = document.getElementsByTagName("head")[0];
        var js = document.createElement("script");
        js.type = "text/javascript";
        js.src = "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js";
        head.appendChild(js);

    }

但它仍然给我上面的错误,即使它们加载的顺序是正确的,当我检查控制台日志时,它给我
false
,这意味着jQuery已经定义

检查JQuery是否在引导加载请求之前加载。如果JQuery尚未加载,则无法加载引导程序

您没有在那里加载jQuery

您应该在这个脚本之前在DOM中创建一个
SCRIPT
元素,在jQuery lib位置使用src,或者在我引用的行之后动态加载它(即,创建脚本标记,将src设置为jquery库相对或绝对URL/URI,添加已加载的事件处理程序以执行
scriptLoadHandler
,并最终将新脚本附加到DOM)

最简单的方法是在使用脚本之前通过脚本标记加载脚本

编辑:OP提供更多信息后,以下是解决方案:

  • 检查jQuery的版本:如果不是您想要的版本,请加载它
  • 在加载了所需的jQuery版本(或者已经加载)之后,加载引导
  • JSFiddle:


    OP没有发布我所看到的所有相关代码,因为then
    if(this.readyState==“complete”| | this.readyState==“loaded”)
    不太可能,是的,但我再次认为在引导主题模板中动态加载jQuery是没有意义的。我会选择直接从CDN加载jQuery…Ya在网站上下文中没有真正意义,但可能OP使用了一些用户脚本,希望绝对确保加载特定的jQuery 2.1.4版本等等nt覆盖加载的任何其他版本,或者如果jQuery尚未包含,则加载它,但我只是猜测,不知何故问题不清楚。编辑:忘记用户脚本,这是一个小部件,所以确实有意义:
    所以我正在开发一个简单的javascript小部件
    伙计们,当我说
    //在这里加载jQuery
    时,我是说我已经加载了,我刚刚加载了我不会发布详细信息。如果你这么想,让我更新一下帖子want@hussain,您不能在调用代码之前简单地添加
    吗?我确实检查过,并且在文档响应中jquery脚本位于引导脚本之上。注释不用于扩展讨论;此对话已被删除。
        function loadScript(src, callback) {
            var js = document.createElement('script');
            js.src = src;
            js.type = 'text/javascript';
    
            if (typeof callback === 'function') {
                js.addEventListener('load', callback);
            }
    
            document.body.appendChild(js);
        }
    
        var myScript = function () {
            //alert(window.jQuery.fn.jquery);
            alert($.fn.modal ? 'Bootstrap loaded' : 'Bootstrap not loaded');
        }
    
        if (window.jQuery === undefined || window.jQuery.fn.jquery !== '2.1.4') {
            window.oldJQuery = window.jQuery; // so that you can return back whenever you want
            loadScript('https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js', function () {
                loadScript('https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js', myScript);
            });
        } else {
            loadScript('https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js', myScript);
        }