“Conditional Comments” – was ist das?
“Conditional Comments” (CC) sind eine proprietäre HTML- Syntax, die nur der Microsoft Internet Explorer (IE) interpretiert, alle anderen Browser lesen diese als normalen HTML- Kommentar und reagieren nicht.
Eingesetzt wird diese um z.B. spezielle CSS- Dateien im Head oder Elemente im Body nur vom IE laden oder anzeigen zu lassen.
Artikel hierzu bei wikipedia: de.wikipedia.org/wiki/Conditional_Comments
Beispiel:
<!--[if IE]>Ich bin ein IE<![endif]-->
Dieser Text (”Ich bin ein IE”) wird nur vom IE angezeigt, für alle anderen Browser ist dies ein HTML- Kommentar und wird ignoriert.
In dieser Form läßt sich aber kein umgekehrter Fall ermöglichen, also eine Textzeile (oder CSS- Datei), welche alle Browser – außer IEs - anzeigen (diverse Browserweichen mal nicht angedacht).
Deshalb die Frage: wie kann man CC dazu nutzen, auch “Nicht- Internet Explorer” zu erkennen, obwohl diese die CC ignorieren?
Eine diesbezügliche Diskussion im selfhtml- Forum brachte eine ebenso geniale wie einfache (und auch valide) Lösung zu Tage:
<!--[if IE]>Ich bin ein IE<![endif]-->
<!--[if !IE]>-->Ich bin kein IE<!--<![endif]-->
Zur Erklärung:
- die erste Zeile wird von allen Browsern außer dem IE ignoriert – ein klassisches CC also. Das “<!- -” öffnet und das “- ->” schließt üblicherweise ein HTML- Kommentar, was dazwischen liegt wird somit für den Besucher nicht dargestellt. Nur der IE erkennt seine Sonder- Syntax (”if IE” bedeutet nat. “wenn ein IE”) und reagiert dementsprechend- Anzeige der Zeile “Ich bin ein IE”.
- In Zeile zwei werden diese “CC / HTML- Kommentare” mittels “<!- -” und “- ->” sofort wieder geschlossen bzw. vorher geöffnet. “<!- -[if !IE]>- ->” und “<!- -<![endif]- ->” sind also “in-sich” geschlossene Kommentare, alles was dazwischen liegt (”Ich bin kein IE”) wird von allen Browsern angezeigt.
Nur nicht vom IE: der erkennt “[if !IE]” als CC, und da er aber ein IE ist (das Rufzeichen “!” wird in vielen Programmiersprachen als “nicht”- Bedingung verwendet) ignoriert er alles bis zum Abschluß des CC, also bis zu “<![endif]–>” – keine Anzeige der Text- Zeile.
Easy as easy can be – oder auf deutsch gesagt: das Einfache kann so einfach sein ;-)
Für Interessierte hat Microsoft eine Dokumentation mit erweiterten Informationen online gestellt. Dort sind noch andere (meist nicht valide) Möglichkeiten zu finden.





Adonis 31.05.2010 - 11:51 Uhr
Davon habe ich schon mal gehört wir doch auch als weichen oder so bezeichnet