Günter Marchewka: externe .js-Dateien dynamisch einbinden

Beitrag lesen

Liebe Forumer,

ich binde in eine HTML-Seite ca. 20 externe .js-Dateien ein. Den Code hatte ich bisher statisch und teilweise dynamisch hinterlegt. Alles funktioniert prima. Um die Wartbarkeit der Seiten zu erhöhen möchte ich die statisch hinterlegten Aufrufe ebenfalls dynamisch einbinden und kriege das nicht hin.
Die Dateien ipssystemf.js (definiert ein Array) und ipssystemd.js (schaufelt Daten in das Array) ersetzen die vielen statischen Aufrufe nach dem Muster <script... type... src...></script>. Deren Einbindung funktioniert.
Das anschliessende script mit der for-Schleife funktioniert.Die darin generierten Aufrufe für document.write führen nicht zu dem gewünschten Ergebnis. Die Fehlermeldungen sind schwanken zwischen "xx ist unbekannt" und "objekt erwartet".
Das anschliessende Script beginnend mit dem aufdröseln von window.name funktioniert, inklusive der darin generierten Aufrufe für document.write.
Warum funktioniert der erste Teil mit der for-Schleife nicht? Ich habe schon probiert, alle aufrufe die statisch waren so wie sie sind in eine externe .js-Datei zu packen, was überhaupt nicht ging. Das Auslagern der document.write-Aufrufe in eine externe .js-Datei führte auch nicht zum Erfolg.
Hier der Code, der nicht funktioniert:
<html>
<head>
<title>Projektdokumentation Arbeitsschritte</title>
<meta http-equiv="expires" content="0">
<script language="JavaScript1.1" type="text/javascript" src="ipsystemf.js">
</script>
<script language="JavaScript1.1" type="text/javascript" src="ipsystemd.js">
</script>

<script language="JavaScript1.1" type="text/javascript">
<!--

for (i=0;i<ips.length-1;i++)
     { alert('anzips=' + ips.length + ' i=' + i + ' name=' + ips[i].name);
       document.write('<script language="JavaScript1.1" type="text/javascript" src="' + ips[i].name + '"></script>');
     }
//-->
</script>
<script language="JavaScript1.1" type="text/javascript">
<!--
Wname = window.name.split('.');
if (2 != Wname.length)
   { alert(' Fehler!\n\n Falscher Programmaufruf!\n\n Bitte wenden Sie sich an Ihre Administration\n Der Eintrag in der Komponentendatei für die aufzurufende SOURCE ist fehlerhaft!');
     history.back();
   }
JSname = window.name;
var gefunden = '';
for (i=0;i<pa.length;i++)
     {
       if (pa[i].source == window.name)
          {
           gefunden = 'ja';
           if (pa[i].funktion) // Fehlen ist erlaubt
              { document.write('<script language="JavaScript1.1" type="text/javascript" src="' + pa[i].funktion + '"></script>');
              }
           if (pa[i].konfig) // Fehlen ist erlaubt
              { document.write('<script language="JavaScript1.1" type="text/javascript" src="' + pa[i].konfig + '"></script>');
              }
           document.write('<script language="JavaScript1.1" type="text/javascript" src="' + pa[i].source + '"></script>');
           if (pa[i].titel) document.title= pa[i].titel;
          }
     }
  if (!gefunden) // DivAuswahl generiert die Aufrufe. Fehler kann in der Verwendung unterschiedlicher partikeld.je-Dateien liegen.
     {
       alert('Oh, was ist passiert?\n\n Hatten sie diese Seite in Ihre Favoriten aufgenommen (gebookmarked)??\n\n Das funktioniert leider nicht.\n\n Sie kommen jetzt zur Startseite. Falls Sie diese Seite über die Favoriten aufgerufen haben,\n können Sie sie von dort aus neu aufrufen.\n\n Das war nicht der Fall? Dann haben wir eine\n\n Katastrophe!\n\n Fehlfunktion im Script DivAuswahl!\n\n Bitte wenden Sie sich an Ihre Administration\n Die Programmlogik ist zu überprüfen!');
       window.location.href="iprojekt.html";
     }

//-->
</script>
Vielen Dank für das Interesse
Grüsse Günter