Voorwaardelijk commentaar in IE
Vervallen: 6 mei 2020
Internet Explorer, de bekende browser van Microsoft, en zijn opvolger Ms-Edge, houden zich goed aan de webstandaarden.
Dat wil zeggen: vanaf IE versie 10. Dat is in het verleden wel anders geweest. Het Document Object Model (DOM) van Internet
Explorer week nogal af van wat de gezamenlijke concurrentie gebruikte. Dat gaf irritatie bij web-programmeurs, die voor elke
website een speciale IE-versie moesten schrijven. Met name Internet Explorer 6 was voor web-programmeurs een soort ellende.
Uit die tijd dateren ook de zg. browser-sniffers, JavaScript-programma's waarmee kon worden bepaald welke browser de bezoeker
gebruikte. Browser-sniffing technieken worden tegenwoordig beschouwd als achterhaald.
Vanaf Internet Explorer 7 ging het langzaam beter, maar toch was het nog verre van volmaakt. Microsoft kwam al in versie 5.5 met een eigen methode om onderscheid te maken tussen IE en "iets anders": Conditional Comments (CC) (Voorwaardelijk Commentaar). Hiermee kun je ook bepalen om welke versie van IE het gaat.
Conditional Comments
Zoals de naam al zegt gaat het om Commentaar-tags waarin "iets" zit waarmee je het gedrag van IE kunt beïinvloeden.
Het commentaar [IF] bevat een voorwaarde voor de IE-versie. Als daar aan is voldaan wordt de ingesloten HTML
uitgevoerd, totdat het commentaarblok wordt afgesloten met [ENDIF].
Voor de goede orde: Het gaat hier om commentaar. Dat wordt door elke browser geïnterpreteerd, maar de meeste browsers doen er verder niets mee (het is immers commentaar). Als Internet Explorer echter commentaar vindt dat is opgemaakt als voorwaardelijk commentaar, dan reageert het er op.
De syntax is als volgt:
<!--[IF GE IE 9]>
Hier staat HTML die door IE moet worden verwerkt als de IE-versie 9 is of hoger.
<![ENDIF]-->
Let op de manier waarop de conditie is opgebouwd:
- De hele conditie staat tussen vierkante haken
- Eerst is er de IF (verplicht),
- daarna komt de vergelijkingsoperator (optioneel),
- dan IE (verplicht),
- tenslotte het versienummer (optioneel).
Als je een sub-versie nodig hebt, zoals bij IE 5.5, dan moeten er vier decimalen worden gebruikt. Je schrijft dan:<!--[IF IE 5.5000]>
Dit komt alleen voor bij IE 5.5. Verder zul je het niet nodig hebben.
Het voorwaardelijke commentaar sluit je af met: <![ENDIF]-->
Let op het uitroepteken!
Vergelijkingsoperatoren
Operator | Betekenis | Voorbeeld | |
! | Ontkenning | [IF ! IE 6] Alle versies van IE, behalve versie 6. |
|
LT | Kleiner dan | [IF LT IE 7] Versies van IE vóór versie 7. |
|
LTE | Kleiner dan of gelijk aan |
[IF LTE IE 8] Versies van IE vóór versie 8, en versie 8 zelf. |
|
GT | Groter dan | [IF GT IE 8] Versies van IE ná versie 8. |
|
GTE | Groter dan of gelijk aan |
[IF GTE IE 8] Versie 8 van IE en alle versies die daarna (nog) komen. |
Het is ook mogelijk om de andere browsers dan Internet Explorer iets te laten doen. Dat gaat met een trucje. De code is:
<!--[IF !IE]><!-->
HTML-code voor "andere" browsers
<!--<![ENDIF]-->
Dit ziet er nogal cryptisch uit. Bedenk dat de "andere" browsers de voorwaardelijke commentaren alleen zien als commentaar. Internet Explorer herkent dit als voorwaardelijk commentaar en slaat de code tussen de [IF] en [ENDIF] over.
Opmerking: Dit werkt voor alle versies van IE tot en met versie 9. Vanaf versie 10 is IE voldoende compatibel met andere browsers, zodat speciale ingrepen niet meer nodig zijn. Voorwaardelijk commentaar wordt door IE 10, IE 11 en Edge t.m. EdgeHTML-versie 15 nog steeds goed verwerkt.
Gebruik:
- De code kan op elke plaats in een document staan, na de <!DOCTYPE>-tag. Het is dus zelfs mogelijk om de <HTML>-tag van een id of class te voorzien, afhankelijk van de browserversie.