CHIARA SALVATORE

Cloud Infrastructure Administrator

Devops Engineer

LinkedIn  Twitter  Delicious  profilo Facebook solo per conoscenti

HTML5 : come i browser gestiscono gli elementi non riconosciuti

Ogni browser ha una lista di elementi HTML supportati. Qualunque elemento non compaia in quella lista è da considerarsi un “elemento sconosciuto”.
Alla domanda su come applicare uno stile a questi elementi e su come renderizzare il DOM in questi casi, ogni browser ha dato una risposta differente.
E’ necessario sapere che tutti i browser renderizzano gli elementi sconosciuti come inline.
Poiché la maggior parte dei nuovi elementi HTML5 sono block ciò potrebbe comportare gravi cambiamenti alla visualizzazione del layout. Si potrebbe risolvere impostando manualmente all’interno del CSS la proprietà display:block.
Purtroppo, prima di IE9, Internet Explorer ignorava a priori qualunque stile applicato ad un elemento sconosciuto, quindi anche questo:

article,aside,details,figcaption,figure,
footer,header,hgroup,menu,nav,section {
display:block;
}

Sempre Internet Explorer, nelle versioni precedenti alla 9, non permette che un elemento sconosciuto abbia dei figli all’interno del DOM. Tutto quello che era all’interno del nuovo tag viene renderizzato fuori di esso, sullo stesso livello; diventa quindi un “fratello”.

Seppur con un workaround non troppo elegante, la problematica può essere risolta: basta creare (senza appenderlo nel DOM!) con una funzione javascript l’elemento sconosciuto che vogliamo utilizzare, prima del caricamento del DOM.


var e = ("abbr,article,aside,audio,canvas,datalist,details," +
"figure,footer,header,hgroup,mark,menu,meter,nav,output," +
"progress,section,time,video").split(',');
for (var i = 0; i < e.length; i++) { document.createElement(e[i]); }

In questo modo, Internet Explorer riconosce l'elemento e di conseguenza anche gli stili ad esso applicati.

Uno script più completo può essere reperito su GoogleCode: HTML5 IE enabling script.

Post correlati

Posted in Computer notes | Tagged , , , , , | Leave a comment

Leave a Reply

“Se non puoi essere una via maestra, sii un sentiero. Se non puoi essere il sole, sii una stella. Sii sempre il meglio di ciò che sei.”
 Martin Luther King