IE: falsche Leerzeichen am Ende des Wertes von innerHTML

- javascript
@@alle:
Mit
alert("»" + document.getElementById("foo").innerHTML + "«");
alert("»" + document.getElementById("bar").innerHTML + "«");
gibt IE für
<p id="foo">foo</p>
<p id="bar">bar</p>
»foo« und »bar« aus – wie zu erwarten.
Selbes Ergebnis für
<div>
<p id="foo">foo</p>
<p id="bar">bar</p>
</div>
Nicht aber für
<ul>
<li id="foo">foo</li>
<li id="bar">bar</li>
</ul>
da gibt er »foo « und »bar « aus – mit angehängten Leerzeichen.
Dasselbe auch für
<ul>
<li id="foo">foo </li>
<li id="bar">bar </li>
</ul>
»foo « und »bar « – ebenfalls mit jeweils einem Leerzeichen. (*)
<ul>
<li id="foo">foo</li><li id="bar">bar</li>
</ul>
ergibt »foo« und »bar «.
<ul><li id="foo">foo</li><li id="bar">bar</li></ul>
ergibt »foo« und »bar«.
Dieselben Ergebnisse kommen bei 'firstChild.nodeValue
' statt 'innerHTML
'.
Was treibt den IE in den Wahnsinn, bei 'li'-Elementen nachfolgendes Whitespace in den Elementinhalt zu übernehmen?
Was kann man dagegen tun? Quelltext umzuformatieren kommt nicht infrage. Nachbehandlung mit Stringoperationen wegen (*) eigentlich auch nicht.
Irgeneine Chance, an die richtigen Inhalte der 'li'-Elemente zu kommen?
Live long and prosper,
Gunnar
Hi,
Dieselben Ergebnisse kommen bei '
firstChild.nodeValue
' statt 'innerHTML
'.
Noch perverser:
Wahrend outerHTML fuer einen Absatz
»
<P id=foo>foo</P>«
ergibt, ergibt es fuer <li id="bar">bar</li> einfach nur
»
<LI id=bar>bar «
Was treibt den IE in den Wahnsinn, bei 'li'-Elementen nachfolgendes Whitespace in den Elementinhalt zu übernehmen?
Er scheint auf HTML 4-Level stehengeblieben zu sein - da *duerfen* die schliessenden </li> fehlen, also warum nicht gleich "weg damit" ...
Na ja, offenbar bis auf das letzte LI einer Liste, das wollen wir schon huebsch behalten - "Ordnung muss sein!"
Aus
<ul>
<li id="abc">abc</li>
<li id="def">def</li>
<li id="ghi">ghi</li>
</ul>
macht er doch gleich mal folgendes outerHTML:
»
<UL><LI id=abc>abc
<LI id=def>def
<LI id=ghi>ghi </LI></UL>«
Was kann man dagegen tun?
Vermutlich gar nichts.
Irgeneine Chance, an die richtigen Inhalte der 'li'-Elemente zu kommen?
Die scheint es fuer den IE nicht mehr zu geben. Er versaut das ganze offenbar zu dem Zeitpunkt, wo er aus dem HTML-Code einen DOM-Baum erstellt - und deshalb wird es vermutlich keine Eigenschaft geben, die den richtigen Inhalt repraesentiert.
MfG ChrisB
Hallo,
Noch perverser:
Wahrend outerHTML fuer einen Absatz
»
<P id=foo>foo</P>«
ergibt, ergibt es fuer <li id="bar">bar</li> einfach nur
»
<LI id=bar>bar «
das erklärt einiges.
Aus
<ul>
<li id="abc">abc</li>
<li id="def">def</li>
<li id="ghi">ghi</li>
</ul>
>
> macht er doch gleich mal folgendes outerHTML:
>
> »
> <UL><LI id=abc>abc
> <LI id=def>def
> <LI id=ghi>ghi </LI></UL>«
Das ist auch genau dasselbe Format, das er erzeugt, wenn ich die geladene Webseite lokal speichere: Tags sind fast alle groß geschrieben, Attribute in willkürlichem CamelCase, in willkürlicher Reihenfolge und überwiegend ohne Anführungszeichen, schließende Tags fehlen zum Teil, und viele Elementinhalte enden mit einem Leerzeichen.
Ähnliches gilt für Stylesheets, die bei der Aktion mitgespeichert werden: Elementselektoren sind durchweg großgeschrieben, CSS-Eigenschaften ebenso, im Quelltext zusammengefasste Eigenschaften sind plötzlich getrennt notiert (also z.B. margin-top, margin-bottom, margin-left und margin-right) und in wahllos zufälliger Reihenfolge.
> > Irgeneine Chance, an die richtigen Inhalte der 'li'-Elemente zu kommen?
> Die scheint es fuer den IE nicht mehr zu geben. Er versaut das ganze offenbar zu dem Zeitpunkt, wo er aus dem HTML-Code einen DOM-Baum erstellt - und deshalb wird es vermutlich keine Eigenschaft geben, die den richtigen Inhalt repraesentiert.
Fürchte ich auch.
So long,
Martin
--
Ungeschehene Ereignisse können einen katastrophalen Mangel an Folgen nach sich ziehen.
(Unbekannter Politiker)
Hi,
Quelltext umzuformatieren kommt nicht infrage.
Wie absolut ist das?
Keine neuen, sinnfreien Inhaltselemente einzufuegen, OK, klar.
Aber ein kleines Kommentaerchen vielleicht?
<ul>
<li id="foo">foo</li><!--Kommentar-->
<li id="bar">bar</li><!--Kommentar-->
</ul>
ergibt naemlich »foo« und »bar«.
MfG ChrisB