Dieter Raber: Scripte per JS nachladen

Hallo,

Mein Problem dreht sich um einen DHTML-Kalender und hat mit drei verschiedenen Scripten zu tun

  • config.js deklariert u. a. die Variablen __PFAD__ und __LANGUAGE__ und laedt entspechend zwei Scripte nach:
      document.write('<scr' + 'ipt type="text/javascript" src="' + __PATH__ + '/lang/' + __LANGUAGE__ + '.js"></scr' + 'ipt>');
      document.write('<scr' + 'ipt type="text/javascript" src="' + __PATH__ + '/calendar.js"></scr' + 'ipt>');
      Die Datei selbst wird im Body mit <script src... eingebunden

  • __LANGUAGE__ + '.js enthaelt im wesentlichen Arrays mit Monatsnamen, Tagesnamen etc.

  • calendar.js bildet einen Calender in einem div-Element und verwaltet diesen

Gecko-Browser verrichteen ihren Dienst dabei voelleig klaglos.
IE 6 laedt erstmal die Seite, bricht den Vorgang aber mit einer Fehlermeldung ab. (alert 'Die Internetseite ... kann nicht geoeffnet werden. Vorgang abgebrochen, danach die IE Standard 404)
Opera kann sich nicht so recht entscheiden, einmal laedt er bis zum Script und zeigt den Rest nicht an, ein andermal bringt er eine JS Fehlermeldung, naemlich, dass er das Array mit den Monatsnamen nicht kennen wuerde. Manchmal zeigt er die Seite auch an. Das mit dem fehenden Array ist auch offenbar das Problem vom IE, wie ich durch experimentieren feststellen konnte.

Ich bin ziemlich ratlos, wie ich da vorgehen soll.

Gruß,

Dieter

  1. Hallo nochmal,

    Mittlerweile sieht die Welt voellig anders aus. Alle Scripte werden jetzt brav geladen. Das Problem liegt an einer Funktion, die ein appendChild am <body> machen sollte. Gecko und Opera ok, bie IE das beschriebene Problem

    Die Funktion im Groben
    function fooCreate()
    {
      var foo = document.createElement('div');
          foo.setAttribute('id', 'bar', 'false');

    var bodyElem = document.getElementsByTagName('body')
      bodyElem[0].appendChild(foo);
    }

    IE kann auf unterschiedliche Arten, etwa removeChild, alert etc. auf bodyElem zugreifen, scheitert aber an appendChild.

    Gruß,

    Dieter