JS中的动态脚本加载器

时间:2010-08-13 09:48:18

标签: javascript google-api

如何使用google

这样的完整处理程序编写动态MULTIPLE脚本加载器
google.load("http://script1");
google.load("http://script2");
google.setOnLoadCallback(function(){});

感谢

3 个答案:

答案 0 :(得分:1)

我的建议是不要打扰自己加载脚本,除非你看看一些框架是如何做到这一点的,因为你的应用程序可能存在安全风险。事实上,我会将您重定向到JQuery,因为它实现了该功能(请参阅here)。

答案 1 :(得分:1)

有开源js可以缓解你的问题。 您可以使用LABJSRequreJS个插件。

LABJSRequireJS等脚本加载器可以提高代码的速度和质量。此外,它将动态加载脚本。

答案 2 :(得分:0)

我是这样写的

myApp.Loader = function(){
    var queries = [];
    var q = 0;
    var p = 0;
    var started = false;
    var _callback = function(){};

    var start = function(){
        if(queries.length > 0 && !started){
            started = true;
            load(queries.shift());
        } else if(queries.length > 0 && started){
            load(queries.shift());
        } else if(queries.length == 0 && started){
            started = false;
            if(q > 0 && q == p){
                callback();
            }
        }
    };

    var load = function(fullUrl){
        $.getScript(fullUrl, function() {
            p++;
            start();
        });
    };

    var callback = function(){
        _callback();
    };

    this.setCallback = function(fnc){
        _callback = fnc;
        if(q > 0 && q == p){
            callback();
        }
    };

    this.addQuery = function(query){
        queries.push(query);
        q++;
        if(!started) {
            start();
        }
    };

    return this;
}

var Loader = new myApp.Loader();

myApp.load = function(fullUrl){
    Loader.addQuery(fullUrl);
}

myApp.setOnLoadCallback = function(fnc){
    Loader.setCallback(fnc);
}

并将其命名为

myApp.load("http://script1");
myApp.load("http://script2");
myApp.load("http://script3");
myApp.setOnLoadCallback(function(){
    // complete script load handling
});