Corsi on-line

Supplire alla mancanza di commenti condizionali in IE10

Già prima del suo rilascio sotto forma di release definitiva, la Casa di Redmond aveva reso noto che Internet Explorer 10 non avrebbe offerto alcun supporto per i commenti condizionali, una mancanza che di fatto costringe gli sviluppatori ad adottare tecniche di browser sniffering o in alternativa a ricorrere a degli hacks specifici per l’ultima versione di questo programma. Come aggirare il problema senza una soluzione nativa ottenendo comunque un targeting efficace di IE10?

Una possibile procedura potrebbe basarsi sull’esclusione di tutte le release del browser di Big M tranne l’ultima, quindi, nel caso specifico parliamo delle versioni che vanno dalla sesta alla nona. A questo scopo ci potrebbe essere di aiuto l’istruzione JavaScript @cc_on che ha il compito di abilitare il supporto per le conditional compilations all’interno dei commenti in un script; una conditional compilation si presenta come una forma assoluta di object detection tramite la quale imporre a Internet Explorer di prendere in considerazione soltanto certe parti di un sorgente JavaScript sulla base di condizioni predefinite dall’utente.

Un utilizzo pratico dello statement @cc_on per la IE10 detection potrebbe essere il seguente:

<!--[if !IE]><!--<script>
if (/*@cc_on!@*/false) {
document.documentElement.className+=' ie10';
}
</script><!--<![endif]-->

Avremo così una classe denominata “ie10” da associare all’elemento “<html>” grazie ad un meccanismo molto simile a quello delle istruzioni condizionali; una regola di stile CSS in grado di utilizzare la classe potrebbe essere strutturata sulla base del seguente modello:

.ie10 .example {
/* stili per IE10 */
}

La soluzione proposta presenta un evidente vantaggio perché basata su un’istruzione che è valida soltanto per Internet Explorer 10, ma anche alcuni svantaggi: il primo riguarda il fatto che essa richiede JavaScript e non sfrutta quindi un approccio CSS-only, in secodno luogo, per motivi che appaiono chiari, potrebbe non funzionare per una futura versione del browser.

Post correlati
I più letti del mese
Tematiche