Hein_Mück: Dynamischer Script-Bereich

Zunächst allen ein wunderschönes neues Jahr.

Obwohl ich die Suche intensiv genutzt habe, konnte ich leider nichts zu diesem Thema finden. Vielleicht deshalb, weil mir kein passender Suchbegriff eingefallen ist.

Das Problem ist, innerhalb einer HTML-Datei mit Javascript fallweise eine andere ausgelagerte Javascript-Datei zu laden.

Beispiel:

<script src="dateiname.js" type="text/javascript"></script>

Die Angabe dateiname soll sich nun abhängig von einer Bedingung ändern. Alle js-Dateien zu einer Datei zusammenfassen bietet sich nicht an, da der Umfang längere Ladezeiten in Anspruch nehmen würde.

document.write scheint leider auch keine Lösung zu sein, da zum Ladezeitpunkt bereits Elemente der Seite dargestellt werden.

  1. @@Hein_Mück:

    Das Problem ist, innerhalb einer HTML-Datei mit Javascript fallweise eine andere ausgelagerte Javascript-Datei zu laden.

    Lösung des Problems ist, ein 'script'-Element zu erzeugen, in den Elementbaum zu hängen und dessen 'src'-Attribut fallweise zu setzen:

    window.onload = function ()  
    {  
     var condition = "foo";  
      
     var scriptToInclude = document.createElement("script");  
     document.body.appendChild(scriptToInclude);  
     scriptToInclude.type = "text/javascript";  
      
     switch (condition)  
     {  
      case "foo":  
       scriptToInclude.src = "foo.js";  
       break;  
      case "bar":  
       scriptToInclude.src = "bar.js";  
       break;  
      case "baz":  
       scriptToInclude.src = "baz.js";  
       break;  
      default:  
       scriptToInclude.src = "quz.js";  
     }  
    };
    

    Live long and prosper,
    Gunnar

    --
    „Das Internet ist ein großer Misthaufen, in dem man allerdings auch kleine Schätze und Perlen finden kann.“ (Joseph Weizenbaum)
    1. Vielen Dank für die schnelle Hilfe. :o)

  2. Lieber Hein_Mück,

    <script src="dateiname.js" type="text/javascript"></script>

    Die Angabe dateiname soll sich nun abhängig von einer Bedingung ändern.

    Du kennst das if-Statement? Oder wo genau liegt Dein Problem?

    Du kennst document.http://de.selfhtml.org/javascript/objekte/document.htm#create_element@title=createElement(), mit dem man <script>-Elemente dynamisch erzeugen kann? Hier für Dich eine Funktion, in der diese Methode des document-Objektes zum Einsatz kommt:

    addJS = function (URL) {  
      var scriptElm = document.createElement("script");  
      scriptElm.type = "text/javascript";  
      scriptElm.src = URL;  
      document.getElementsByTagName("head")[0].appendChild(scriptElm);  
     };
    

    Ich verwende diese Methode in meinem CMS, wenn dieses vordefinierte JavaScripte nachladen soll (wie z.B. auf dieser Seite).

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. Manchmal kommt man aus unerfindlichen Gründen auf nicht auf eine naheliegende Lösung. Danke Dir.