ChrisB: IE verschlückt Zeichen

Beitrag lesen

Hi,

document.getElementById(ElementID).innerHTML = Content;
      // validate content
      if (document.getElementById(ElementID).innerHTML == Content) {

Das ist kein sinnvoller Versuch einer "Validierung".

Erst weist du innerHTML HTML-Code zu.
Den parst der Browser dann, und fuegt ihn in seinen DOM-Baum ein.

Anschliessend wird auf innerHTML wieder lesend zugegriffen. Dabei erstellt der Browser aus dem DOM-Baum wieder eine HTML-Repraesentation.
Die Annahme, diese muesse wieder dem originalen Code entsprechen, ist aber zu verwegen.

Bei fast allen Browsern spuckt es OK aus. Aber beim IE kommen dann Fehler. Beispiel-Fehler:

Fail im 'MainArea' for /test.php
Länge Original: 17539
Länge aus DOM: 13427

"Da kommen Fehler" bedeutet in diesem Falle zunaechst lediglich, dass dein Script Fehlermeldungen ausgibt, weil du unguenstige Pruefungen vornimmst.

Wenn ich das im Developer Toolbar dann untersuche, dann fehlen aus dem Source wilde Teile. Mitten im Statement wird dann was rausgerissen oder weggelassen.

Der IE hat ein sehr eigenes Verstaendnis davon, wie die Repraesentation von DOM-Knoten per innerHTML aussieht.

Irgendein(e) "Source" sollte dich letztendlich aber auch nicht interessieren.

Interessant ist lediglich, hat der Browser alle Elemente so ins DOM eingefuegt, wie beabsichtigt?

Innerhalb von LoadContent() kommt in Content definitiv das richtige an. Aber irgendwie klappt es beim setzen als InnerHTML nicht. Warum macht der IE die Daten hier beim Einfügen kaputt? Gibt es Regeln, dass man da manches nicht reintun darf?

Zunaechst mal kann der IE sehr empfindlich reagieren, wenn der Code, den man per innerHTML zuweisen will, nicht valide ist.
Dann kann man auch nicht fuer alle Element auf innerHTML schreibend zugreifen (siehe Dokumentation in der MSDN).

Und auch, was das dynamische Hinzufuegen von Formularelementen angeht, kann der IE sehr eigen sein.

MfG ChrisB

--
„This is the author's opinion, not necessarily that of Starbucks.“