Zum Inhalt springen

„Conditional Comments“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
[gesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
K Bot: Syntaxhighlight: Sprache html4strict nach html korrigiert, siehe H:SYH , http nach https umgestellt
Zeile 1: Zeile 1:
'''Conditional Comments''' (kurz: ''CC''; englisch für: ''bedingte Kommentare'') sind [[Kontrollstruktur]]en in [[Hypertext Markup Language|HTML]]-Dokumenten, die nur vom [[Microsoft]] [[Internet Explorer]] und Programmen aus der [[Microsoft Office|Microsoft-Office]]-Reihe (z.&nbsp;B. [[Microsoft Word]]) interpretiert werden. Sie bieten die Möglichkeit, je nach Programmversion eines [[HTML-Rendering|HTML-Renderers]], unterschiedliches HTML auszuführen. Ab dem Internet Explorer&nbsp;10 wird diese Form der [[Browserweiche]] für [[Quirks-Modus#Quirks-Modi in Webbrowsern|standardkonforme HTML-Seiten]] nicht mehr unterstützt.<ref>[http://blogs.msdn.com/b/ie/archive/2011/07/06/html5-parsing-in-ie10.aspx HTML5 Parsing in IE10]</ref>
'''Conditional Comments''' (kurz: ''CC''; englisch für: ''bedingte Kommentare'') sind [[Kontrollstruktur]]en in [[Hypertext Markup Language|HTML]]-Dokumenten, die nur vom [[Microsoft]] [[Internet Explorer]] und Programmen aus der [[Microsoft Office|Microsoft-Office]]-Reihe (z.&nbsp;B. [[Microsoft Word]]) interpretiert werden. Sie bieten die Möglichkeit, je nach Programmversion eines [[HTML-Rendering|HTML-Renderers]], unterschiedliches HTML auszuführen. Ab dem Internet Explorer&nbsp;10 wird diese Form der [[Browserweiche]] für [[Quirks-Modus#Quirks-Modi in Webbrowsern|standardkonforme HTML-Seiten]] nicht mehr unterstützt.<ref>[https://blogs.msdn.com/b/ie/archive/2011/07/06/html5-parsing-in-ie10.aspx HTML5 Parsing in IE10]</ref>


== HTML-Syntax ==
== HTML-Syntax ==
Zeile 5: Zeile 5:
Die Verwendung erfolgt analog zu echten HTML-Kommentaren (<code>&lt;!-- ''Kommentar'' --></code>):
Die Verwendung erfolgt analog zu echten HTML-Kommentaren (<code>&lt;!-- ''Kommentar'' --></code>):


<syntaxhighlight lang="html4strict" inline><!--[if 'Bedingung']></syntaxhighlight>''Anweisungen''<syntaxhighlight lang="html4strict" inline><![endif]--></syntaxhighlight>
<syntaxhighlight lang="html" inline><!--[if 'Bedingung']></syntaxhighlight>''Anweisungen''<syntaxhighlight lang="html4strict" inline><![endif]--></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 Agent]]s interpretieren diese Struktur als syntaktisch korrekten Kommentar und ignorieren den Inhalt.
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 Agent]]s interpretieren diese Struktur als syntaktisch korrekten Kommentar und ignorieren den Inhalt.
Zeile 91: Zeile 91:
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):
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="html4strict" inline><![if lt IE 7]></syntaxhighlight>''Anweisungen für IE vor Version 7 und andere Browser''<syntaxhighlight lang="html4strict" inline><![endif]></syntaxhighlight>
<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="html4strict" inline><![if lt IE 7]></syntaxhighlight> und <syntaxhighlight lang="html4strict" inline><![endif]></syntaxhighlight> als ungültige Tags und stellen nur den Inhalt dazwischen dar.
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 [[World Wide Web Consortium|W3C]] ist folgende Syntax:
Syntaktisch korrekt und valide nach [[World Wide Web Consortium|W3C]] ist folgende Syntax:


<syntaxhighlight lang="html4strict" inline=""><!--[if lt IE 7]>--></syntaxhighlight>''Anweisungen für IE vor Version 7''<syntaxhighlight lang="html4strict" inline><!--<![endif]--></syntaxhighlight>
<syntaxhighlight lang="html" inline=""><!--[if lt IE 7]>--></syntaxhighlight>''Anweisungen für IE vor Version 7''<syntaxhighlight lang="html" inline><!--<![endif]--></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:
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="html4strict">
<syntaxhighlight lang="html">
<!--[IF IE]>Dieser Inhalt wird vom Internet Explorer älter als Version 10 ausgeführt<![ENDIF]-->
<!--[IF IE]>Dieser Inhalt wird vom Internet Explorer älter als Version 10 ausgeführt<![ENDIF]-->
<!--[IF !IE]>--> -->Dieser Inhalt wird von allen anderen Browsern ausgeführt<!-- <![ENDIF]-->
<!--[IF !IE]>--> -->Dieser Inhalt wird von allen anderen Browsern ausgeführt<!-- <![ENDIF]-->
Zeile 107: Zeile 107:
== Bedeutung für Outlook 2007 ==
== 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>[http://support.microsoft.com/kb/933793 ''Outlook 2007 uses only Word as the e-mail editor''.] [[Microsoft Developer Network|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'' [http://msdn.microsoft.com/de-de/library/aa338201.aspx (1/2)] [http://msdn.microsoft.com/de-de/library/aa338200.aspx (2/2)]. MSDN, Stand August 2006.</ref> Die Darstellung von HTML-E-Mail kann mit bedingten Kommentaren für Outlook angepasst werden, um z.&nbsp;B. bei Newslettern eine Alternative zu einem Eingabeformular anzubieten.
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>[https://support.microsoft.com/kb/933793 ''Outlook 2007 uses only Word as the e-mail editor''.] [[Microsoft Developer Network|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'' [http://msdn.microsoft.com/de-de/library/aa338201.aspx (1/2)] [http://msdn.microsoft.com/de-de/library/aa338200.aspx (2/2)]. MSDN, Stand August 2006.</ref> Die Darstellung von HTML-E-Mail kann mit bedingten Kommentaren für Outlook angepasst werden, um z.&nbsp;B. bei Newslettern eine Alternative zu einem Eingabeformular anzubieten.


<syntaxhighlight lang="html4strict" inline><!--[if gte mso 12]></syntaxhighlight>''Anweisungen für Office 2007 und größer''<syntaxhighlight lang="html4strict" inline><![endif]--></syntaxhighlight>
<syntaxhighlight lang="html" inline><!--[if gte mso 12]></syntaxhighlight>''Anweisungen für Office 2007 und größer''<syntaxhighlight lang="html4strict" inline><![endif]--></syntaxhighlight>


== JavaScript und JScript ==
== JavaScript und JScript ==
Zeile 134: Zeile 134:
* [http://www.css4you.de/wsbw/index.html#bwiecc Browserweiche für Internet Explorer mit Conditional Comments]
* [http://www.css4you.de/wsbw/index.html#bwiecc Browserweiche für Internet Explorer mit Conditional Comments]
* [http://msdn.microsoft.com/de-de/library/ms537512.aspx Über Conditional Comments] im [[Microsoft Developer Network|MSDN]] (englisch)
* [http://msdn.microsoft.com/de-de/library/ms537512.aspx Über Conditional Comments] im [[Microsoft Developer Network|MSDN]] (englisch)
* Jens Meiert: [http://meiert.com/en/blog/20070201/why-conditional-comments-are-bad-repeat-bad/ Kritik an Conditional Comments] (englisch)
* Jens Meiert: [https://meiert.com/en/blog/20070201/why-conditional-comments-are-bad-repeat-bad/ Kritik an Conditional Comments] (englisch)


== Einzelnachweise ==
== Einzelnachweise ==

Version vom 19. Juni 2023, 18:04 Uhr

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.[1]

HTML-Syntax

Die Verwendung erfolgt analog zu echten HTML-Kommentaren (<!-- Kommentar -->):

<!--[if 'Bedingung']>Anweisungen<![endif]-->

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.

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):

<![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 Syntax:

<!--[if lt IE 7]>-->Anweisungen für IE vor Version 7<!--<![endif]-->

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:

 <!--[IF IE]>Dieser Inhalt wird vom Internet Explorer älter als Version 10 ausgeführt<![ENDIF]-->
 <!--[IF !IE]>--> -->Dieser Inhalt wird von allen anderen Browsern ausgeführt<!-- <![ENDIF]-->

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.[2] Zusätzlich sind aus Sicherheitsgründen verschiedene HTML-Features (wie Formulare oder Scripte) unter Outlook 2007 nicht verfügbar.[3] 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]-->

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“.[4]

 <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.[5]

Siehe auch

Einzelnachweise

  1. HTML5 Parsing in IE10
  2. Outlook 2007 uses only Word as the e-mail editor. MSDN, Stand 3. April 2007.
  3. Word 2007 HTML and CSS Rendering Capabilities in Outlook 2007 (1/2) (2/2). MSDN, Stand August 2006.
  4. Conditional Compilation im microsoft.com/technet
  5. @cc_on-Anweisung bei MSDN