JürgenB: DOMContentLoaded eingetreten aber nötiges fehlt immer noch

Beitrag lesen

Hallo,

die Scripte werden asyncron nachgeladen, aber <script> kennt das Load-Event, über das eine Callback-Funktion aufgerufen werden kann. Hier mal „mein“ Scriptnachlader:

LoadScript = function(url,callback) {
  var scr = document.createElement('script');
  scr.type = "text/javascript";
  scr.async = "async";
  if(typeof(callback)=="function") {
    scr.onloadDone = false;
    scr.onload = function() { 
      if ( !scr.onloadDone ) {
        scr.onloadDone = true;
        callback(); 
      }
    };
    scr.onreadystatechange = function() { 
      if ( ( "loaded" === scr.readyState || "complete" === scr.readyState ) && !scr.onloadDone ) {
        scr.onloadDone = true;
        callback();
      }
    }
  }
  scr.onerror = function() {
    console.log(url + " konnte nicht geladen werden.";
  }
  scr.src = url;
  document.getElementsByTagName('head')[0].appendChild(scr);
} // LoadScript

Ob das „onreadystatechange“ noch nötig ist, habe ich noch nicht geprüft.

Ich habe hier explizit scr.async = "async"; gesetzt, um sicher zu sein, das asyncron geladen wird. Ohne war das Verhalten bei meinen Tests vor mehreren Jahren browserabhängig.

Gruß
Jürgen