Ankündigung

Einklappen
Keine Ankündigung bisher.

JQuery javascript nachladen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • JQuery javascript nachladen

    Hallo,

    ich versuche gerade, eine Möglichkeit zu finden, einige JavaScript-Dateien mit JQuery nachzuladen und erst NACHDEM alle geladen sind, code auszuführen.

    Code:
    for(key in aLibs) {	
            $.ajax( {
    		url : key,
    		complete : function(XMLHttpRequest, textStatus) {
    			console.log(textStatus);
    		},
    		dataType : 'script',
    		cache : true
    	});
    }
    
    jQuery(function($) {
    // mach was mit den libs, wenn sie ALLE geladen sind (NICHT nur eine per complete event)
    }
    Leider wird das // mach was... ausgeführt, bevor alle libs geladen sind, was natürlich beim ersten Laden zu einem Fehler führt, da der Code auf die Libs zugreift. Beim zweiten Laden sind die Dateien gecached und es funktioniert einwandfrei.

    Gibt es eine elegante Methode, den Code erst dann auszuführen, wenn die Libs geladen sind?
    Fynder - http://www.fynder.de - Tutorials zum Thema Technik


  • #2
    // mach was in den ajaxComplete-Handler schreiben?
    --

    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


    --

    Kommentar


    • #3
      "// mach was" soll nicht nach jeder Lib ausgeführt werden, sondern nur einmal. Schreibe ich es in den complete, wird der code bei jeder lib ausgeführt.

      Da die Libs asynchron geladen werden, werden die kleinen Dateien schnell geladen und die großen langsam... Folglich kann ich auch nicht einfach den code in den letzten Complete-Handler packen.

      Ich könnte wahrscheinlich den Langsamsten ermitteln und es da rein schreiben, aber sobald eine Lib dazu kommt, die langsamer ist, gehts wieder nicht...

      Es sollen alle libs geladen sein, dann soll code ausgeführt werden. Prinzipiell könnte ich einfach immer das Laden der nächste Lib in den complete-handler schreiben und am Schluss für den letzten dann eine Methode, die ausgeführt werden soll, aber ich dachte vielleicht gibt es eine elegantere Methode...

      Meine aktuelle Lösung:

      Code:
      function loadLib(lib) {
      	$.ajax( {
      		url : lib,
      		complete : function(XMLHttpRequest, textStatus) {
      			if(Config.aLibs.length > 0) {
      				loadLib(Config.aLibs.shift());
      			} else {
      				Init();
      			}
      		},
      		dataType : 'script',
      		cache : true
      	});	
      }
      
      loadLib(Config.aLibs.shift());
      Fynder - http://www.fynder.de - Tutorials zum Thema Technik

      Kommentar


      • #4
        wird der code bei jeder lib ausgeführt.
        Stimmt, da habe ich nicht dran gedacht.
        --

        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
        Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


        --

        Kommentar

        Lädt...
        X