Tra i metodi differenti esistenti per caricare un foglio di stile diverso a seconda del browser, possiamo utilizzare uno strumento offerto da Microsoft Internet Explorer, cioè, i commenti condizionali.
I commenti condizionali sono porzioni di codice HTML definite con la sintassi di commento HTML, per cui ignorate dai browser (a parte Internet Explorer).
Normale commento HTML:
| 1 | <!-- Questo è un commento --> |
Il commento è visibile solo nel codice sorgente della pagina e non nella pagina stessa. La soluzione di Microsoft sta quindi di inserire delle condizioni (if) all’interno appunto dei commenti HTML, la sintassi è semplice e così anche le espressioni che vengono valutate.
Commento Condizionale:
| 1 | <!--[if espressione]> Contenuto <![endif]--> |
In questo modo è possibile visualizzare dei contenuti a seconda del risultato dell’espressione, anche il codice per caricare un foglio di stile.
Alcuni esempi di espressioni:
| 1 | <!--[if IE]>....<![endif]--> è verificata se il browser è Internet Explorer in qualsiasi versione. |
| 2 | <!--[if IE 5]>....<![endif]--> è verificata se il browser è Internet Explorer versione 5 ; |
| 3 | <!--[if gt IE 5]>....<![endif]--> è verificata se il browser è Internet Explorer con versione maggiore di 5; |
| 4 | <!--[if gte IE 5]>....<![endif]--> è verificata se il browser è Internet Explorer versione 5 o superiore; |
| 5 | <!--[if !IE 5]>....<![endif]--> è verificata se il browser non è Internet Explorer 5. |
Ovviamente basta sostituire il numero associato alla versione per creare l’espressione di cui abbiamo bisogno, anche creando commenti a cascata.
Ora è immediato il passaggio per caricare un foglio di stile, per esempio carico ie.css in caso di Internet Explorer e comunque il file generic.css:
| 1 | <link rel="stylesheet" href="generic.css" type="text/css" /> |
| 2 | <!--[if IE]><link rel="stylesheet" href="ie.css" type="text/css" /><![endif]--> |
Ha senso che il foglio di stile dedicato ad Internet Explorer sia successivo a quello generico, in quanto permette di sostituire i parametri diversamente definiti.