加载多个javascript文件-jquery

加载多个javascript文件-jquery,jquery,Jquery,我使用下面的代码动态加载js脚本 $.getScript("/../../site/js/test.js").done(function(script, textStatus) { console.log("test.js :: " + textStatus ); }); 如果我想在同一段代码中加载多个脚本文件,而不是编写另一个getScript,我该怎么办。。示例test2.js、test3、js我建议使用现有的加载程序框架,而不是编写自己的加载程序框架。看看RequireJS:我

我使用下面的代码动态加载js脚本

$.getScript("/../../site/js/test.js").done(function(script, textStatus) {

    console.log("test.js :: " + textStatus );
});

如果我想在同一段代码中加载多个脚本文件,而不是编写另一个getScript,我该怎么办。。示例test2.js、test3、js我建议使用现有的加载程序框架,而不是编写自己的加载程序框架。看看RequireJS:

我建议使用现有的加载程序框架,而不是编写自己的加载程序框架。看看RequireJS:

好吧,如果您必须为每个文件编写.getScript,这是一种干净的方法。它还允许构建要加载的文件列表

var脚本=['plugin.js','test.js'];
对于(var i=0;i
如果您必须为每个文件编写.getScript,这是一种干净的方法。它还允许构建要加载的文件列表

var脚本=['plugin.js','test.js'];
对于(var i=0;i
//多个浏览器兼容且不加载同一脚本两次

var filesadded = ""
    function loadJSQueue(array, success) {
        if (array.length != 0) {
            if (filesadded.indexOf("[" + array[0] + "]") == -1) {
                filesadded += "[" + array[0] + "]" //List of files added in the form "[filename1],[filename2],etc"
                var callbackCalled = false;
                oHead =  document.getElementsByTagName("head")[0] || document.documentElement;
                var oScript = document.createElement('script');
                oScript.type = 'text/javascript';
                oScript.src = array[0];
                array.shift(); //                    $(oScript).ready(function () {  //                     //              }) //                    oScript.onload = oScript.onreadystatechange = function () { //                        if (!this.readyState || this.readyState == 'complete') { //                       //           loadJSQueue(array, success); //                        } //            };

                var done = false;

                // Attach handlers for all browsers
                oScript.onload = oScript.onreadystatechange = function () {
                    if (!done && (!this.readyState ||
        this.readyState === "loaded" || this.readyState === "complete")) {
                        done = true;

//                            jQuery.handleSuccess(null, xhr, status, data); //                            jQuery.handleComplete(null, xhr, status, data);

                        // Handle memory leak in IE
                        oScript.onload = oScript.onreadystatechange = null;
                        if (oHead && oScript.parentNode) {
                            oHead.removeChild(oScript);
                        }

                        loadJSQueue(array, success);
                    }
                };

                oHead.insertBefore(oScript, oHead.firstChild);
            }
            else {
                array.shift();
                loadJSQueue(array, success);
            }
        }
        else {
            success();
        }

    }


//   usage:    
                        loadJSQueue(["../../JavaScript/plupload/js/jquery.plupload.queue/jquery.plupload.queue.js",
                "../../JavaScript/plupload/js/plupload.js",
                "../../JavaScript/plupload/js/plupload.html4.js",
                "../../JavaScript/plupload/js/plupload.html5.js"
                ], function () {
                     //do your after load stuff here
                })

//多浏览器兼容且deoesnt加载同一脚本两次

var filesadded = ""
    function loadJSQueue(array, success) {
        if (array.length != 0) {
            if (filesadded.indexOf("[" + array[0] + "]") == -1) {
                filesadded += "[" + array[0] + "]" //List of files added in the form "[filename1],[filename2],etc"
                var callbackCalled = false;
                oHead =  document.getElementsByTagName("head")[0] || document.documentElement;
                var oScript = document.createElement('script');
                oScript.type = 'text/javascript';
                oScript.src = array[0];
                array.shift(); //                    $(oScript).ready(function () {  //                     //              }) //                    oScript.onload = oScript.onreadystatechange = function () { //                        if (!this.readyState || this.readyState == 'complete') { //                       //           loadJSQueue(array, success); //                        } //            };

                var done = false;

                // Attach handlers for all browsers
                oScript.onload = oScript.onreadystatechange = function () {
                    if (!done && (!this.readyState ||
        this.readyState === "loaded" || this.readyState === "complete")) {
                        done = true;

//                            jQuery.handleSuccess(null, xhr, status, data); //                            jQuery.handleComplete(null, xhr, status, data);

                        // Handle memory leak in IE
                        oScript.onload = oScript.onreadystatechange = null;
                        if (oHead && oScript.parentNode) {
                            oHead.removeChild(oScript);
                        }

                        loadJSQueue(array, success);
                    }
                };

                oHead.insertBefore(oScript, oHead.firstChild);
            }
            else {
                array.shift();
                loadJSQueue(array, success);
            }
        }
        else {
            success();
        }

    }


//   usage:    
                        loadJSQueue(["../../JavaScript/plupload/js/jquery.plupload.queue/jquery.plupload.queue.js",
                "../../JavaScript/plupload/js/plupload.js",
                "../../JavaScript/plupload/js/plupload.html4.js",
                "../../JavaScript/plupload/js/plupload.html5.js"
                ], function () {
                     //do your after load stuff here
                })

这是异步加载js文件的最佳方式

loadScripts(['script1.js','script2.js'], function(){ alert('scripts loaded'); }    

     function loadScripts(scripts, callback){

                var scripts = scripts || new Array();
                var callback = callback || function(){};

                for(var i = 0; i < scripts.length; i++){
                (function(i) {
                    $.getScript(scripts[i], function() {

                      if(i + 1 == scripts.length){
                        callback();
                      }
                    });
                  })(i);  
                }
           }
loadScripts(['script1.js','script2.js',function(){alert('scripts loaded');}
函数加载脚本(脚本、回调){
var scripts=scripts | | new Array();
var callback=callback | | function(){};
对于(var i=0;i
这是异步加载js文件的最佳方式

loadScripts(['script1.js','script2.js'], function(){ alert('scripts loaded'); }    

     function loadScripts(scripts, callback){

                var scripts = scripts || new Array();
                var callback = callback || function(){};

                for(var i = 0; i < scripts.length; i++){
                (function(i) {
                    $.getScript(scripts[i], function() {

                      if(i + 1 == scripts.length){
                        callback();
                      }
                    });
                  })(i);  
                }
           }
loadScripts(['script1.js','script2.js',function(){alert('scripts loaded');}
函数加载脚本(脚本、回调){
var scripts=scripts | | new Array();
var callback=callback | | function(){};
对于(var i=0;i
我不知道你为什么不能有另一个getScript。有什么具体原因吗?我正要回答你确实需要编写更多的getScript命令,但我想首先问你为什么不想这样做。你只是想减少代码量吗?如果是这样,那么每个脚本只有一个getScript,这就是它的工作方式。我'm动态加载整个页面-$('body')。加载('/bmds/pages/test.html'));-所以我需要添加支持的javascript文件和css…我不知道你为什么不能有另一个getScript。有什么具体原因吗?我正要回答你确实需要编写更多的getScript命令,但我想首先问你为什么不想这样做。你只是想减少代码量吗?如果是的话,那就是1个getScrip我正在动态加载整个页面-$('body')。加载('/bmds/pages/test.html'));-所以我需要添加支持的javascript文件和css…如何确保脚本将按照您调用的顺序加载?第一个脚本可能比第一个脚本需要更长的时间,并且条件i+1==scripts.length不会被更正,如果您循环遍历数组并以键0开始,以1递增,那么您的顺序是正确的吗?因为(i)职能{}(i);它会等到一切都完成后再继续,你试过了吗?嗯,每个$.getScript都是一个单独的异步调用,不是吗?@hamilton.lima,你说得对,i+1==scripts.length只会确保加载最后一个脚本,其他脚本可能仍然很忙……如何确保按照你调用的顺序加载脚本led?第一个可能比第一个需要更长的时间,条件i+1==scripts.length不会被更正。如果您在数组中循环并以键0开始,以1递增,那么您就有了您想要的顺序,对吗?因为(函数(i){})(i);它会等到一切都完成,然后再继续,你试过了吗?嗯,很难让每个$.getScript都是一个单独的异步调用,不是吗?@hamilton.lima,你是对的,i+1==scripts.length只会确保加载最后一个脚本,其他脚本可能仍然很忙……非常感谢,这对处理多个文件非常有帮助。谢谢非常好,它对处理多个文件非常有用。