Mr. Horse: IE-Problem mit durch XSL erzeugtes SCRIPT-Element

Beitrag lesen

Hallo,

ich hänge hier seit zwei Tagen zusammen mit einem für das Backend zuständigen Kollegen an einem extrem merkwürdigen Problem, das nur den IE betrifft.
Es wäre super, wenn Ihr da hilfreiche Hinweise - womöglich aus eigener Erfahrung - hättet.

Szenario:
Serverseitig erzeugt ein XML-Parser mit Hilfe eines XSL-Stylesheets ein XHTML-Dokument, das er an den Browser ausliefert. In das XHTML-Dokument werden nun verschieden JS-Dateien eingebunden:
<script type="text/javascript" src="lib/js/util.js"></script>
etc.
Die entstandene Seite ist valide und funktioniert in Firefox und Opera auch prächtig.

Problem:
IE6 und IE7 brechen das Rendern der Seite ab, sobald sie auf das erste Script-Element mit src-Attribut stoßen (das haben wir verifiziert durch Verschieben der Script-Tags ans Ende der Datei), obwohl der XHTML-Quellcode im Browsercache komplett vorhanden ist und alle Pfade stimmen.
Der IE5.5 zeigt ein leicht abweichendes Verhalten: er rendert die Seite vollständig, und nur das JS wird nicht geladen.

Versuche, das Problem einzukreisen:

  1. Entfernt man die Script-Elemente, so wird die Seite auch in IE6 und IE7 komplett gerendert.
  2. Speichert man die komplette Seite (mit Script-Elementen) per "Speichern als komplette Webseite" auf der Festplatte und ruft diese lokale Version ungeändert im IE auf - dann funktioniert alles!
  3. Lädt man diese lokale Kopie auf den Entwicklungsserver und ruft sie von dort im IE auf - dann funktioniert noch immer alles! - Obwohl der Quellcode natürlich identisch ist mit dem der im IE nicht funktionierenden Seite, die vom XML-Parser geliefert wird.
  4. Inline-Javascript verursacht keine Probleme, auch nicht im IE.
    <script type="text/javascript">alert('ho');</script> funktioniert also.
  5. Weder DOCTYPE noch Zeichenkodierung konnten wir als Fehlerursache feststellen.
  6. Auch eine Einbindung der Script-Elemente im XSL-Stylesheet per xsl:element bringt keine Änderung des IE-Verhaltens.

Zusammenfassung:
Der IE bekommt eine intakte und valide XHTML-Datei vom Server, mit der andere Browser keine Probleme haben. Der IE jedoch bricht den Rendervorgang ab, sobald er auf ein Script-Element mit src-Attribut stößt.

Provisorische Lösung:
Als wir dann schon mit Voodoo anfingen, versuchte ich noch, die Script-Elemente zum Einbinden der JS-Dateien dynamisch per JS in das Dokument zu schreiben:
<script type="text/javascript"><![CDATA[ document.write('\u003csc' + 'ript type="text/javascript" src="lib/js/util.js"\u003e\u003c/sc' + 'ript\u003e'); ]]></script>
Und das klappt nun in allen Browsern, auch im IE....

Mal ehrlich: das ist doch völlig irrwitzig, oder?
Wir könnten nun diese provisorische Lösung beibehalten - lieber aber wäre uns, das Problem zu verstehen und wirklich zu lösen.

Danke für Eure Hilfe!

So long,
Mr. Horse

--
No, Sir, I don't like it.