Supponiamo che dobbiate generare una tabella a runtime con javascript, supponiamo che dobbiate fare uso del DOM html…niente di pi√π facile:

?View Code JAVASCRIPT
//creo i vari nodi
var obj = document.getElementById("id");
var tbl = document.createElement("table");
var tr = document.createElement("tr");
var td = document.createElement("td");
var tn = document.createTextNode("Io sono il campo di una tabella ma non mi vedi su IE gnè gnè");
//attacco i vari nodi
td.appendChild(tn);
tr.appendChild(td);
tbl.appendChild(tr);
obj.appendChild(tbl);

Con Firefox tutto ok, con Opera tutto ok, con Safari tutto ok, con Camino tutto ok, con Konqueror tutto ok, con Galeon tutto ok…non ho provato con la psp, ma diciamolo…con chi non funzioner√† questo script se non con LUI?

internet explorer

ecco come risolvere il problema…

Il workaround √® piuttosto semplice se ne avete tenuto conto da principio, altrimenti dovrete modificare un po’ il vostro layout.
Semplicemente Internet Explorer si rifiuta di fare il render del contenuto delle tabelle se esse non contengono il tag tbody.
Sottolineo il termine “render” in quanto i nuovi nodi vengono effettivamente attaccati alla tabella, solo che non vengono mostrati a video. E’ piuttosto curioso infatti fare un alert dell’innerHTML della tabella in questione (seguendo l’esempio qui sopra baster√† aggiungere un ‘alert(obj.innerHTML)’ alla fine) e vedere IE mentre sputa il codice corretto pur non visionandolo…-.-’
Ben inteso, il tag tbody non √® obbligatorio secondo lo standard HTML4, tuttavia sappiamo pi√π o meno tutti che l’atteggiamento del browser microsoft √® piuttosto incline a “interpretare” gli standard secondo un’ottica tutta sua.

Ma veniamo al codice corretto:

?View Code JAVASCRIPT
var obj = document.getElementById("id");
var tbdy = document.createElement("tbody");
var tbl = document.createElement("table");
var tr = document.createElement("tr");
var td = document.createElement("td");
var tn = document.createTextNode("Questa volta sono visibile al mondo");
td.appendChild(tn);
tr.appendChild(td);
tbdy.appendChild(tr);
tbl.appendChild(tbdy);
obj.appendChild(tbl);

Buon divertimento con IE7 :D

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • LinkedIn
  • Live
  • Slashdot
  • StumbleUpon
  • Technorati
  • TwitThis

Some random stuff

2 Responses to “IE7 DOM bug del tag Table”

  1. saintpumpkin Says:

    tra l’altro sembra che ie7 funzioni da cu** con il “setAttribute()”

  2. ubu Says:

    grazie ciccio…mi ci stavo inca22ando come una bestia!!!

Leave a Reply