Freitag, 7. Dezember 2007

Der Internet Explorer nimmt es sehr genau

Das der Internet Explorer von Microsoft es mit der Interpretation von Standards nicht ganz so eng sieht ist ja allgemein bekannt. Aber manchmal besitzt er auch einen Anflug von Genauigkeitswahn und will alle anderen übertrumpfen.

Möchte man zum Beispiel eine HTML-Tabelle per JavaScript ins DOM schreiben, dann geht dies bei allen Browsern (SeaMonkey, Firefox, Opera, Safari) ... nur eben nicht im Internet Explorer:
<html>
<head>
  <title></title>
</head>
<body>
  <div id="content"></div>
  <script type="text/javascript">
    table = document.createElement('table');
    table.setAttribute('border', '1');
    tbody = document.createElement('tbody');
    tr = document.createElement('tr');
    td = document.createElement('td')
    text = document.createTextNode('Text');
    td.appendChild(text)
    tr.appendChild(td)
    table.appendChild(tr);
    document.getElementById('content').appendChild(table);
  </script>
</body>
</html>

Bitte genauer .... ja natürlich ... eine HTML-Tabelle benötigt selbstverständlich auch ein tbody-Element - und dann mag es auch wieder der Internet Explorer:
<html>
<head>
  <title></title>
</head>
<body>
  <div id="content"></div>
  <script type="text/javascript">
    table = document.createElement('table');
    table.setAttribute('border', '1');
    tbody = document.createElement('tbody');
    tr = document.createElement('tr');
    td = document.createElement('td')
    text = document.createTextNode('Text');
    td.appendChild(text)
    tr.appendChild(td)
    tbody.appendChild(tr); // Wichtig für den IE
    table.appendChild(tbody); // Wichtig für den IE
    document.getElementById('content').appendChild(table);
  </script>
</body>
</html>

Hach liebe Redmonder, wenn es euer Liebling doch sonst auch etwas mehr mit den Standards hätte.

Kommentare:

  1. 1000dank für diesen post!
    hat mich vor weiteren Stunden des Frusts gerettet!

    AntwortenLöschen
  2. "sonst auch etwas mehr mit den Standards hätte"?!? Hast du dir den Standard mal angeschaut:

    http://www.w3.org/TR/html401/struct/tables.html#h-11.2.1
    "The TBODY start tag is always required except when the table contains only one table body and no table head or foot sections. The TBODY end tag may always be safely omitted."

    Sie halten sich mal wieder NICHT an den Standard!

    AntwortenLöschen