Gunnar Bittersmann: IE: falsche Leerzeichen am Ende des Wertes von innerHTML

Beitrag lesen

@@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

--
Das einzige Mittel, den Irrtum zu vermeiden, ist die Unwissenheit. (Jean-Jacques Rousseau)