Conditional Comments

Ooit al eens voorgehad dat Internet Explorer iets niet ondersteunt zoals het hoort?

Voor deze zeldzame gevallen heeft Microsoft namelijk zelf een oplossing bedacht. Ze geven onder bepaalde voorwaarden zaken weer die door geen enkele andere browser ondersteund worden (*kuch hasLayout, boxbordermodel, ..).

Zo kan je bepaalde delen html code uitschakelen of juist alleen weergeven op Internet Explorer..

Deze tekst wordt genegeerd door Internet Explorer.

Hoe zit dit precies in elkaar?

Laten we bovenstaand voorbeeld eens in stukken ontleden:

<!--[if IE]>Deze tekst wordt alleen herkend door Internet Explorer. Je gebruikt versie <![endif]-->

We schrijven eerst een <!–comment–>, om hier dan vervolgens een voorwaarde tussen [vierkante haakjes] te plaatsen. Vervolgens sluiten we deze voorwaarde af met [endif].

In dit geval is de voorwaarde if IE, wat zoveel wil zeggen als wanneer we hier te maken hebben met Internet Explorer.

<!--[if IE 5]>5<![endif]-->
<!--[if IE 5.0]>5.0<![endif]-->
<!--[if IE 5.5]>5.5<![endif]-->
<!--[if IE 6]>6<![endif]-->
<!--[if IE 7]>7<![endif]-->
<!--[if gt IE 7]>8,9,10 of later ;-) <![endif]-->

Hier stellen we telkens een verschillende voorwaarde, zoals bvb if IE 5.0, dat vanzelfsprekend Wanneer je Internet Explorer 5.0 gebruikt wil zeggen.

Wat wil if gt IE 7 nu zeggen?

Wel, het is natuurlijk al pure fun dat we specifieke browserversies van Internet Explorer kunnen selecteren, maar je kan nog meer doen:

Voorwaarde Betekenis
gt Groter dan
gte Groter dan of gelijk aan
lt Kleiner dan
lte Kleiner dan of gelijk aan

Dankzij deze voorwaarden kan je dus héél precies je gewenste Internet Explorer browser(s) selecteren.

<!--[if !IE]><!-->Deze tekst wordt genegeerd door Internet Explorer<!--<![endif]-->.

Door een uitroepingsteken te gebruiken sluit je Internet Explorer uit. Let ook op de 2 kleine comments in de plaats van 1 grote. Hierdoor zien de andere browsers nog steeds wat ertussen staat.

Kunnen jullie ook raden wat onderstaand stukje code doet?

<!--[if gte IE 6]><!-->Door welke browsers wordt ik weergegeven?<!--<![endif]-->

Ook nog interessant: ondanks dat geneste links illegaal zijn kan Internet Explorer 6 en vroeger deze toch nog op een logische manier weergeven. Als je dit dus combineert met Conditional Comments om de geneste links alleen aan deze browsers te tonen, kan je leuke dingen doen met de css :hover zonder if lte IE6 uit te sluiten.

Later meer hierover ;-) .

10 Reacties to “Conditional Comments”

  1. Christophe zegt:

    Je moet een boek uitbrengen :)

  2. Benjamin zegt:

    Helaas, zoveel vrije tijd heb ik op dit ogenblik niet ;-)

  3. [...] 24 Ways gooit weerom de handdoek in de ring voor een jaartje. Maar Ben neemt de uitdaging aan. Een nieuw blog en al meteen een sterk en zeer interessant artikel. Meer van dat. [...]

  4. Wolf zegt:

    Zou het niet mooi zijn moest er ook een comment zijn voor if:notIE… dan kon ik tenminste mijn transparante divs toepassen :) .

  5. Benjamin zegt:

    <!--[if !IE]><!--><div id="transparant">Deze tekst wordt genegeerd door Internet Explorer</div><!--<![endif]-->

    ;-)

  6. Erick S. zegt:

    Klinkt allemaal erg leuk en handig, maar hoe spreek ik op een soortgelijke manier browsers als: Firefox, Crazy Browser, Opera e.d. aan?

    Of is dat niet nodig of zo?

  7. Benjamin zegt:

    Andere browsers hebben geen soortgelijke feature.
    Maar omdat ze niet zoveel bugs hebben zoals bij Internet Explorer, en de webstandaarden beter opvolgen, is dit minder erg/nodig. Zoiets zou natuurlijk wel handig zijn :-)

  8. wilfred nas zegt:

    er zijn manieren om safari en opera apart te benaderen, zie hier voor dit stukje wat ik een tijd geleden heb geschreven.
    In het kort, voor safari zet je ‘foo/css’ in plaats van ‘text/css’ als je een stylesheet importeerd. Hierin zet je zaken voor safari en (gescheiden met een #) voor opera.

  9. WNAS zegt:

    Safari and Opera CSS hack…

    As you may or not may know, I am not too fond of css hacks. The necessary IE conditional comment aside, I tend to avoid them. But something a standardista must do what he has to do in order to make things work.
    To serve a style sheet to safari and oper…

Reageer