Hallo,
mit folgenden Script lade ich bei Bedarf weitere Javascripte nach:
JB.LoadScript = function(url,callback) {
var scr = document.createElement('script');
scr.type = "text/javascript";
scr.async = true;
if(typeof(callback)=="function") {
scr.onloadDone = false;
scr.onload = function() {
if ( ! scr.onloadDone ) {
scr.onloadDone = true;
JB.Debug_Info(url,"loaded",false);
callback();
}
};
scr.onreadystatechange = function() {
if ( ( "loaded" === scr.readyState || "complete" === scr.readyState ) && ! scr.onloadDone ) {
scr.onloadDone = true;
JB.Debug_Info(url,"ready",false);
callback();
}
}
}
scr.src = url;
document.getElementsByTagName('head')[0].appendChild(scr);
//document.body.appendChild(scr);
//document.getElementsByTagName('head')[0].insertBefore(scr,document.getElementsByTagName('head')[0].firstChild);
} // LoadScript
Im IE8 und im IE9 feuert der onreadystatechange wenn das Script verfügbar ist, im Firefox und im Opera der onload. In der Callback-Funktion kann ich auf Funktionen aus dem Script zugreifen.
Im Chrome und im Safari feuert der onload allerdings schon, bevor das Script verfügpar ist. In der Callback-Funktion greife ich auf eine Funktion aus dem nachgeladenem Script zu und erhalte die Fehlermeldung "undefined is not a function".
Habt ihr eine Idee, wie ich zuverlässig prüfen kann, ob das Script da ist bzw. kennt ihr eine bessere Funktion zum Scriptnachladen?
Gruß, Jürgen