Zum Inhalt springen

„Conditional Comments“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
[ungesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
Zeile 109: Zeile 109:
Normalerweise verstecken bedingte Kommentare Anweisungen vor User-Agents, die diese nicht verstehen. Microsoft spricht hiebei von ''"downlevel-hidden"'', also "vor älteren Browsern versteckten", Kommentaren. Diese Wirkung läßt sich aber auch umkehren (sog. ''"downlevel-revealed"''-Kommentare):
Normalerweise verstecken bedingte Kommentare Anweisungen vor User-Agents, die diese nicht verstehen. Microsoft spricht hiebei von ''"downlevel-hidden"'', also "vor älteren Browsern versteckten", Kommentaren. Diese Wirkung läßt sich aber auch umkehren (sog. ''"downlevel-revealed"''-Kommentare):
<![if lt IE 7]> ''Anweisungen für IE vor Version 7 und andere Browser'' <![endif]>
<![if lt IE 7]> ''Anweisungen für IE vor Version 7 und andere Browser'' <![endif]>
Diese Notation ist kein HTML-Kommentar mehr, sondern ein syntaktisch ungültiges [[HTML-Tag|Tag]]. Die betreffende Bedingung wird vom Internet Explorer trotzdem ausgewertet. Andere Browser ignorieren das ungültige Tag und stellen nur seinen Inhalt dar. Der Quelltext ist in dieser Form allerdings nicht mehr valide nach [[W3C]].
Diese Notation ist kein HTML-Kommentar mehr, sondern ein syntaktisch ungültiges [[HTML-Tag|Tag]]. Die betreffende Bedingung wird vom Internet Explorer trotzdem ausgewertet. Andere Browser ignorieren das ungültige Tag und stellen nur seinen Inhalt dar. Der Quelltext ist in dieser Form valide nach [[W3C]].

Wenn der HTML-Code zusätzlich valide sein soll, muß er folgendermaßen ergänzt werden:
<!--[if lt IE 7]><!--> ''Anweisungen für IE vor Version 7 und andere Browser'' <!--<![endif]-->


==Syntax (JScript)==
==Syntax (JScript)==

Version vom 19. September 2008, 16:17 Uhr

Conditional Comments (kurz: CC; englisch für: Bedingte Kommentare) sind Kontrollstrukturen in HTML-Dokumenten, die derzeit 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, die Auswertung von HTML in diesen Programmen – generell oder nur in bestimmten Versionen – zu beeinflussen, ohne dass es Auswirkungen auf die übrigen Webbrowser oder die Standardkonformität des Quellcodes hätte.

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. Es ist durch vorgegebene Vergleichsoperatoren und -werte möglich, unterschiedliche Versionen des Programms anzusprechen.

Werte (Auswahl)

Wert Funktion Beispiel
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]>
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 hiebei von "downlevel-hidden", also "vor älteren Browsern versteckten", Kommentaren. Diese Wirkung läßt sich aber auch umkehren (sog. "downlevel-revealed"-Kommentare):

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

Diese Notation ist kein HTML-Kommentar mehr, sondern ein syntaktisch ungültiges Tag. Die betreffende Bedingung wird vom Internet Explorer trotzdem ausgewertet. Andere Browser ignorieren das ungültige Tag und stellen nur seinen Inhalt dar. Der Quelltext ist in dieser Form valide nach W3C.

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

Einzelnachweise

  1. MSDN: http://support.microsoft.com/kb/933793/. Outlook 2007 uses only Word as the e-mail editor, Stand 3. April 2007.
  2. MSDN: http://msdn.microsoft.com/en-us/library/aa338201.aspx Word 2007 HTML and CSS Rendering Capabilities in Outlook 2007 (1/2), Stand August 2006.
  3. MSDN: http://msdn.microsoft.com/en-us/library/aa338200.aspx Word 2007 HTML and CSS Rendering Capabilities in Outlook 2007 (2/2), Stand August 2006.