2010-08-13 5 views
0

Comment puis-je écrire chargeur dynamique de script multiple avec gestionnaire complet comme Googlechargeur de script dynamique JS

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

merci

+0

Pourriez-vous élaborer? Qu'essayez-vous de faire exactement? – Harmen

Répondre

0

j'ai écrit comme ça

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); 
} 

et appellent

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

Mon conseil est de ne pas déranger avec le script vous charger, sauf si vous prenez un Regardez comment certains cadres le font parce qu'il peut y avoir des risques de sécurité pour votre application avec ce genre de chose. En fait, je vous redirigerais vers JQuery car il a cette fonctionnalité implémentée (voir here).

1

Il y a js open source qui facilitera votre problème. Vous pouvez utiliser les plugins LABJS ou RequreJS.

Les chargeurs de script comme LABJS, RequireJS amélioreront la vitesse et la qualité de votre code. De plus, il chargera les scripts dynamiquement.