- 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 dem Autor die Möglichkeit, bestimmten oder allen Versionen dieser Programme HTML-Code zu übergeben, ohne dass dieser Code Auswirkungen auf die übrigen Webbrowser oder die Standardkonformität des Quellcodes hätte.
Inhaltsverzeichnis
Syntax (HTML)
Die Verwendung erfolgt analog zu echten HTML-Kommentaren (
<!-- Kommentar -->
):<!--[if Bedingung]> Anweisungen <![endif]-->
Normale User Agents interpretieren diese Struktur als syntaktisch korrekten Kommentar und ignorieren den Inhalt.
Der Internet Explorer hingegen 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.
Bei der Verwendung des Standardkonformen Modus entfällt im Internet Explorer ab Version 10 die Möglichkeit, Conditional Comments zu nutzen[1]. Das Konstrukt wird dort lediglich als Kommentar behandelt.
Werte (Auswahl)
Wert Funktion Beispiel ! IE
wenn kein Internet Explorer <!--[if ! IE]>
IE
wenn Internet Explorer <!--[if IE]>
IE 5
wenn Internet Explorer Version 5.x <!--[if IE 5]>
IE 5.0
wenn Internet Explorer Version 5.0 <!--[if IE 5.0]>
IE 5.5
wenn Internet Explorer Version 5.5 <!--[if IE 5.5]>
IE 6
wenn Internet Explorer Version 6 <!--[if IE 6]>
IE 7
wenn Internet Explorer Version 7 <!--[if IE 7]>
IE 8
wenn Internet Explorer Version 8 <!--[if IE 8]>
IE 9
wenn Internet Explorer Version 9 <!--[if IE 9]>
mso
wenn Microsoft Office <!--[if mso]>
mso 9
wenn Microsoft Office 2000 (Office 2001 auf Mac OS) <!--[if mso 9]>
mso 10
wenn Microsoft Office 2002 (Office X auf Mac OS) <!--[if mso 10]>
mso 11
wenn Microsoft Office 2003 (Office 2004 auf Mac OS) <!--[if mso 11]>
mso 12
wenn Microsoft Office 2007 (Office 2008 auf Mac OS) <!--[if mso 12]>
vml
wenn VML unterstützt wird <!--[if vml]>
Wenn es nötig wird, können Bedingungen auch geklammert werden.
Operatoren (Auswahl)
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 (sog. „downlevel-revealed“-Kommentare):
<![if lt IE 7]> Anweisungen für IE vor Version 7 und andere Browser <![endif]>
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
<![if lt IE 7]>
und<![endif]>
als ungültige Tags und stellen nur den Inhalt dazwischen dar. Syntaktisch korrekt und valide nach W3C ist folgende Variante:<!--[if lt IE 7]><!--> Anweisungen für IE vor Version 7 und andere Browser <!--<![endif]-->
Um Code im Internet Explorer auszuführen und einen alternativen Code für andere Browser einzubinden, eignet sich die nachfolgende Variante. Sie ist ebenfalls nach dem W3C syntaktisch korrekt:
<!--[IF IE]>Das ist für den IE. <![if ! IE]><!-->Das ist für alle anderen Browser.<!--><![ENDIF]><![ENDIF]-->
Syntax (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“ (Conditional Compilation).
<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>
Diese Syntax ist in ähnlicher Form auch in den Sprachumfang von JScript .NET aufgenommen worden (@cc_on-Anweisung).
Bedeutung für Outlook 2007
Die Darstellung von E-Mails im HTML-Format unter Outlook 2007 wird nicht mehr von einer Komponente des Internet Explorer, sondern von Microsoft Word übernommen[2]. Zusätzlich sind aus Sicherheitsgründen verschiedene HTML-Features (wie Formulare oder Scripte) unter Outlook 2007 nicht verfügbar[3][4]. 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.
<!--[if gte mso 12]> Anweisungen für Office 2007 und größer <![endif]-->
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
- ↑ IEBlog: http://blogs.msdn.com/b/ie/archive/2011/07/06/html5-parsing-in-ie10.aspx. Because some features in earlier versions of IE aren’t compatible with HTML5 parsing, we’ve removed them from IE10 mode.
- ↑ MSDN: http://support.microsoft.com/kb/933793/. Outlook 2007 uses only Word as the e-mail editor, Stand 3. April 2007.
- ↑ MSDN: http://msdn.microsoft.com/de-de/library/aa338201.aspx Word 2007 HTML and CSS Rendering Capabilities in Outlook 2007 (1/2), Stand August 2006.
- ↑ MSDN: http://msdn.microsoft.com/de-de/library/aa338200.aspx Word 2007 HTML and CSS Rendering Capabilities in Outlook 2007 (2/2), Stand August 2006.
Wikimedia Foundation.