динамический загрузчик скриптов в JS - PullRequest
0 голосов
/ 13 августа 2010

Как мне написать динамический загрузчик скриптов MULTIPLE с полным обработчиком, таким как google

google.load("http://script1");
google.load("http://script2");
google.setOnLoadCallback(function(){});

спасибо

Ответы [ 3 ]

1 голос
/ 06 мая 2015

Существуют js с открытым исходным кодом, которые облегчат вашу проблему.Вы можете использовать LABJS или RequreJS плагины.

Скриптовые загрузчики, такие как LABJS, RequireJS улучшат скорость и качество вашего кода.Кроме того, он будет загружать сценарии динамически.

1 голос
/ 13 августа 2010

Я советую не беспокоить загрузкой скриптов самостоятельно, если только вы не посмотрите, как это делают некоторые фреймворки, потому что с такими вещами могут возникнуть угрозы безопасности для вашего приложения. На самом деле, я бы вместо этого перенаправил вас на JQuery , так как эта функция реализована (см. здесь ).

0 голосов
/ 13 августа 2010

Я написал так

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
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...