Ergebnis 1 bis 2 von 2
-
02-03-2007, 22:51 #1
Javascriptdatei dynamisch mit AJAX laden
Hallo zusammen!
Für den Eigengebrauch habe ich mir mal folgende Funktion geschrieben und denke, dass sie noch ganz nützlich ist.
Die Funktion ermöglicht das dynamische Laden einer Javascriptdatei (.js) mittels AJAX.
Getestet in Firefox 2.0 und Internet Explorer 5.5, 6 und 7.
Aufruf:Code:loadJSFile(string filename[,bool einmaligEinbinden=false]);
Funktionscode:
HTML-Code://<!-- var ljsf; var schonEingebunden = ""; // Speichert die bereits eingebundenen Scripts function loadJSFile(filename,einmaligEinbinden) { if (einmaligEinbinden) { // schon einbebunden? if (schonEingebunden.indexOf("|"+filename+"|")!=-1) return true; // Nein, in die Liste damit schonEingebunden = schonEingebunden + "|" + filename + "|"; } // Instanz einmalig erstellen if (ljsf == null) ljsf = (navigator.userAgent.indexOf("MSIE")+1)?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest; ljsf.open('get',filename,true); ljsf.setRequestHeader("Connection","close"); ljsf.onreadystatechange = function() { if(ljsf.readyState == 4){ eval(ljsf.responseText); } } ljsf.send(null); } //-->
HTML-Code:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html lang="de"> <head> <title>Testfile für js dynamisch laden</title> <script type="text/javascript">//<!-- var ljsf; var schonEingebunden = ""; // Speichert die bereits eingebundenen Scripts function loadJSFile(filename,einmaligEinbinden) { if (einmaligEinbinden) { // schon einbebunden? if (schonEingebunden.indexOf("|"+filename+"|")!=-1) return true; // Nein, in die Liste damit schonEingebunden = schonEingebunden + "|" + filename + "|"; } // Instanz einmalig erstellen if (ljsf == null) ljsf = (navigator.userAgent.indexOf("MSIE")+1)?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest; ljsf.open('get',filename,true); ljsf.setRequestHeader("Connection","close"); ljsf.onreadystatechange = function() { if(ljsf.readyState == 4){ eval(ljsf.responseText); } } ljsf.send(null); } //--> </script> </head> <body> <!-- HTML Code --> <a href="#" onclick="loadJSFile('./test.js');" title="JS-File Einbinden!">binde test.js ein</a> </body> </html>
test.js: http://dominiquesandoz.ch/Tests/ladeJSDynamisch/test.js
HTML-Code:// <!-- alert("Erfolgreich eingebunden! Ich bin schon das JS-File! :D"); // -->
Grüsse,
jeko
-
18-07-2007, 23:45 #2
Jungspund
- registriert
- 18-07-2007
- Beiträge
- 13
AW: Javascriptdatei dynamisch mit AJAX laden
Ich habe so was ähnliches auch schonmal geschrieben. Wenn man direkt nach dem load Befehl eine Funktion aufruft, die in dem JS File steht, gibt es einen Fehler, weil die Funktion aufgerufen wird bevor der Server antwortet. Man kann aber statt ljsf.open('get',filename,true); schreiben ljsf.open('get',filename,false);. Dann wartet der Browser, bis das Script da ist. das Problem ist nur, dass der Browser total hängt, bis die Antwort kommt.
Außerdem würde ich noch was einbauen, falls die Datei nicht existiert, das sähe dann so aus:Code://<!-- var ljsf; var schonEingebunden = ""; // Speichert die bereits eingebundenen Scripts function loadJSFile(filename,einmaligEinbinden) { if (einmaligEinbinden) { // schon einbebunden? if (schonEingebunden.indexOf("|"+filename+"|")!=-1) return true; // Nein, in die Liste damit schonEingebunden = schonEingebunden + "|" + filename + "|"; } // Instanz einmalig erstellen if (ljsf == null) ljsf = (navigator.userAgent.indexOf("MSIE")+1)?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest; ljsf.open('get',filename,false); ljsf.setRequestHeader("Connection","close"); ljsf.onreadystatechange = function() { if(ljsf.readyState == 4){ switch(ljsf.status){ case 200:eval(ljsf.responseText);break; default:alert("ERROR while loading '"+filename+"':\n\t"+ljsf.status+"\n\t"+ljsf.statusText); } } } ljsf.send(null); } //-->
...javascript makes the web go round...
...AJAX ist ein Waschmittel...
Ähnliche Themen
-
Stylesheets dynamisch laden
Von stripmitz im Forum JavaScriptAntworten: 6Letzter Beitrag: 18-10-2007, 14:32 -
Sprachressourchen Dynamisch laden ??
Von tomkpunkt im Forum JavaScriptAntworten: 4Letzter Beitrag: 15-02-2007, 09:41 -
:hover (per cssHover.htc) bei ajax request neu laden
Von Daniel84 im Forum JavaScriptAntworten: 12Letzter Beitrag: 09-01-2007, 22:24 -
Ja nach laden mittels AJAX ausführen?
Von EnemyArea im Forum Script-CheckAntworten: 8Letzter Beitrag: 16-10-2006, 12:49 -
Bilder dynamisch laden??
Von quaky im Forum FlashAntworten: 2Letzter Beitrag: 12-01-2001, 09:34
Lesezeichen