2011-03-01 5 views
5

Je suis actuellement à la recherche d'un moyen de charger plusieurs scripts/plugins sans liste de blanchisserie listée dans l'en-tête.Chargement de plugins jQuery et de plusieurs scripts Meilleures pratiques

Pour tout simplement avoir un load.js tout charger dans serait très élégant pour moi. J'ai actuellement quelque chose comme ça, mais je ne peux pas le faire fonctionner pour une raison quelconque. Des idées?

Répondre

1

Ceci est ma solution: vérifier si le fichier est ajouté (stocké dans un tableau), puis charger un fichier après l'autre. Fonctionne parfaitement!

var filesadded = "" //list of files already added 
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" 

      oHead = document.getElementsByTagName('head')[0]; 
      var oScript = document.createElement('script'); 
      oScript.type = 'text/javascript'; 
      oScript.src = array[0]; 
      array.shift(); 
      oScript.onreadystatechange = function() { 
       if (this.readyState == 'complete') { 
        loadJSQueue(array, success); 
       } 
      } 

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

    } 
    else { 
     success(); 
    } 
} 

appel avec

loadJSQueue(["../../JavaScript/plupload/js/jquery.plupload.queue/jquery.plupload.queue.js", 
       "../../JavaScript/plupload/js/plupload.js", 
       "../../JavaScript/plupload/js/plupload.html4.js" 
       ], function(){alert("success");}) 
0
 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); 
       } 
      } 
Questions connexes