Conditional Comments
Conditional Comments (kurz: CC; englisch für: bedingte Kommentare) sind Kontrollstrukturen in HTML-Dokumenten, die nur vom Microsoft Internet Explorer und Programmen aus der Microsoft-Office-Reihe (z. B. Microsoft Word) interpretiert werden. Sie bieten die Möglichkeit, je nach Programmversion eines HTML-Renderers, unterschiedliches HTML auszuführen. Ab dem Internet Explorer 10 wird diese Form der Browserweiche für standardkonforme HTML-Seiten nicht mehr unterstützt.<ref>HTML5 Parsing in IE10</ref>
HTML-Syntax
Die Verwendung erfolgt analog zu echten HTML-Kommentaren (<!-- Kommentar -->):
<syntaxhighlight lang="html" inline></syntaxhighlight>
Der Internet Explorer prüft die formulierte Bedingung und interpretiert den Inhalt, wenn die Bedingung zutrifft. Es ist durch vorgegebene Vergleichsoperatoren und -werte möglich, unterschiedliche Versionen des Browsers anzusprechen. Andere User Agents interpretieren diese Struktur als syntaktisch korrekten Kommentar und ignorieren den Inhalt.
Bei der Verwendung des standardkonformen Modus entfällt im Internet Explorer ab Version 10 die Möglichkeit, Conditional Comments zu nutzen. Das Konstrukt wird dann ebenfalls nur als Kommentar behandelt.
{{#invoke:Vorlage:Anker|f |errCat=Wikipedia:Vorlagenfehler/Vorlage:Anker |errHide=1}} Werte (Auswahl)
| Wert | Funktion | Beispiel |
|---|---|---|
! IE
|
wenn kein Internet Explorer | <!--[if !IE]>
|
IE
|
wenn Internet Explorer | <!--[if IE]>
|
IE 5.5
|
wenn Internet Explorer Version 5.5 | <!--[if IE 5.5]>
|
IE 8
|
wenn Internet Explorer Version 8 | <!--[if IE 8]>
|
mso
|
wenn Microsoft Office | <!--[if mso]>
|
mso 15
|
wenn Microsoft Office 2013 | <!--[if mso 15]>
|
vml
|
wenn VML unterstützt wird | <!--[if vml]>
|
Wenn es nötig wird, können Bedingungen auch geklammert werden.
Operatoren
| Operator | Funktion | Beispiel |
|---|---|---|
!
|
Nicht-Operator | <!--[if!(IE 6)]> (wenn nicht IE 6)
|
lt
|
Kleiner-als-Operator | <!--[if lt IE 6]> (wenn kleiner als IE 6)
|
lte
|
Kleiner-gleich-Operator | <!--[if lte IE 6]> (wenn kleiner als oder gleich IE 6)
|
gt
|
Größer-als-Operator | <!--[if gt IE 6]> (wenn größer IE 6)
|
gte
|
Größer-gleich-Operator | <!--[if gte IE 6]> (wenn größer als oder gleich IE 6)
|
&
|
Und-Operator | <!--[if mso &!vml]> (wenn Office-Programm ohne VML-Unterstützung)
|
|
|
Oder-Operator | <!--[if mso | ie]> (wenn Office-Programm oder IE)
|
Umkehrung
Normalerweise verstecken bedingte Kommentare Anweisungen vor User-Agents, die diese nicht verstehen. Microsoft spricht hierbei von „downlevel-hidden“, also „vor älteren Browsern versteckten“, Kommentaren. Diese Wirkung lässt sich aber auch umkehren (sogenannte „downlevel-revealed“-Kommentare):
<syntaxhighlight lang="html" inline><![if lt IE 7]></syntaxhighlight>Anweisungen für IE vor Version 7 und andere Browser<syntaxhighlight lang="html" inline><![endif]></syntaxhighlight>
Hierbei handelt es sich nicht mehr um einen HTML-Kommentar, sondern um syntaktisch fehlerhaftes und somit invalides Markup. Die betreffende Bedingung wird nur vom Internet Explorer ausgewertet. Andere Browser interpretieren die Zeichenfolgen <syntaxhighlight lang="html" inline><![if lt IE 7]></syntaxhighlight> und <syntaxhighlight lang="html" inline><![endif]></syntaxhighlight> als ungültige Tags und stellen nur den Inhalt dazwischen dar. Syntaktisch korrekt und valide nach W3C ist folgende Syntax:
<syntaxhighlight lang="html" inline></syntaxhighlight>Anweisungen für IE vor Version 7<syntaxhighlight lang="html" inline></syntaxhighlight>
Um Code im Internet Explorer < 10 auszuführen und einen alternativen Code für andere Browser einzubinden, eignet sich die nachfolgende Variante. Da alternative Browser mit conditional comments nichts anfangen können, darf der Code für den alternativen Browser nicht innerhalb eines Kommentars stehen, sondern muss zwischen zwei Kommentaren stehen:
<syntaxhighlight lang="html">
Dieser Inhalt wird von allen anderen Browsern ausgeführt
</syntaxhighlight>
Bedeutung für Outlook 2007
Die Darstellung von E-Mails im HTML-Format unter Outlook 2007 wird nicht mehr von einer Komponente des Internet Explorers, sondern von Microsoft Word übernommen.<ref>Outlook 2007 uses only Word as the e-mail editor. MSDN, Stand 3. April 2007.</ref> Zusätzlich sind aus Sicherheitsgründen verschiedene HTML-Features (wie Formulare oder Scripte) unter Outlook 2007 nicht verfügbar.<ref>Word 2007 HTML and CSS Rendering Capabilities in Outlook 2007 (1/2) (2/2). MSDN, Stand August 2006.</ref> Die Darstellung von HTML-E-Mail kann mit bedingten Kommentaren für Outlook angepasst werden, um z. B. bei Newslettern eine Alternative zu einem Eingabeformular anzubieten.
<syntaxhighlight lang="html" inline></syntaxhighlight>
JavaScript und JScript
Seit dem Internet Explorer 4 (JScript 3.0) gibt es einen ähnlichen Mechanismus für JavaScript. Der im IE verwendete JScript-Interpreter wertet folgende Syntax aus, die von anderen Interpretern nur als Kommentar erkannt wird. Microsoft nennt das Verhalten „bedingte Kompilierung“.<ref>Conditional Compilation im microsoft.com/technet</ref>
<syntaxhighlight lang="javascript">
<script type="text/javascript">
/*@cc_on @*/
/*@if (@_jscript_version >= 5.5)
// dieser Bereich ist für jscript-Interpreter >= v5.5 sichtbar
@else @*/
// dieser Bereich wird alternativ dazu ausgeführt
/*@end @*/
</script>
</syntaxhighlight>
Diese Syntax ist in ähnlicher Form auch in den Sprachumfang von JScript .NET aufgenommen worden.<ref>@cc_on-Anweisung bei MSDN</ref>
Siehe auch
Weblinks
- Browserweiche für Internet Explorer mit Conditional Comments
- Über Conditional Comments im MSDN (englisch)
- Jens Meiert: Kritik an Conditional Comments (englisch)
Einzelnachweise
<references />