Ergebnis 1 bis 2 von 2
  1. #1
    Avatar von jeko
    jeko ist offline Foren-Gott
    registriert
    03-06-2004
    Ort
    [CH]Vor meinem PC[/CH]
    Beiträge
    3.069

    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]);
    filename ist der Pfad zur .js-Datei. Als optionaler Parameter kann zusätzlich einmaligEinbinden. Ist einmaligEinbinden true, so wird die Datei nur einmal im gesamten Dokument eingebunden. D.h. sollte im gleichen Dokument ein zweiter Aufruf von loadJSFile mit dem gleichen filename erfolgen, wird die Datei nicht geladet.

    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);
    }
    //-->
    Beispieldatei: Testfile für js dynamisch laden
    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>
    Eingebunden wird das JS-File 'test.js' wenn man auf den Link klickt. In der Datei test.js ist ein Alert. Erscheint dieser Alert nach dem Klick, war das Laden erfolgreich.

    test.js: http://dominiquesandoz.ch/Tests/ladeJSDynamisch/test.js
    HTML-Code:
    // <!--
    
    alert("Erfolgreich eingebunden! Ich bin schon das JS-File! :D");
    
    // -->
    Viel Spass damit!

    Grüsse,
    jeko
    Arbeit an der Sprache ist Arbeit am Gedanken.
    NoPaste / Format / Analyze / Crypt
    Ich bin ein Schwätzer.

  2. #2
    Buenaventure ist offline 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

  1. Stylesheets dynamisch laden
    Von stripmitz im Forum JavaScript
    Antworten: 6
    Letzter Beitrag: 18-10-2007, 14:32
  2. Sprachressourchen Dynamisch laden ??
    Von tomkpunkt im Forum JavaScript
    Antworten: 4
    Letzter Beitrag: 15-02-2007, 09:41
  3. :hover (per cssHover.htc) bei ajax request neu laden
    Von Daniel84 im Forum JavaScript
    Antworten: 12
    Letzter Beitrag: 09-01-2007, 22:24
  4. Ja nach laden mittels AJAX ausführen?
    Von EnemyArea im Forum Script-Check
    Antworten: 8
    Letzter Beitrag: 16-10-2006, 12:49
  5. Bilder dynamisch laden??
    Von quaky im Forum Flash
    Antworten: 2
    Letzter Beitrag: 12-01-2001, 09:34

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •