Podmíněný komentář - Conditional comment
Podmíněné komentáře jsou podmíněné příkazy interpretované prohlížečem Microsoft Internet Explorer verze 5 až 9 ve zdrojovém kódu HTML . Lze je použít k poskytnutí a skrytí kódu do az těchto verzí aplikace Internet Explorer. Podmíněné komentáře nejsou v prohlížečích Internet Explorer 10 a 11 podporovány .
Podmíněné komentáře v HTML se poprvé objevily v prohlížeči Microsoft Internet Explorer 5, ačkoli podpora je nyní zastaralá. V aplikaci Internet Explorer 10 nejsou podmíněné komentáře HTML podporovány, pokud je stránka ve standardním režimu (režim dokumentu 10). Podmíněné komentáře JScript byly zavedeny v aplikaci Internet Explorer 4 a nadále byly podporovány v aplikaci Internet Explorer 10, ve standardním režimu nebo v režimu kompatibility.
Příklady
Zde je jednoduchý příklad, který ukazuje, jak fungují podmíněné komentáře.
<!--[if IE 6]>
<p>You are using Internet Explorer 6.</p>
<![endif]-->
Syntax
Existují dva typy „podmíněných komentářů“: nižší úroveň odhalena a nižší úroveň skrytá .
Základní syntaxe každého typu komentáře je uvedena v následující tabulce. První zobrazený komentář je základní komentář HTML, který je zahrnut pro účely srovnání a pro ilustraci různé syntaxe používané každým typem podmíněného komentáře.
| Typ komentáře | Syntaxe nebo možná hodnota |
|---|---|
| standardní komentář HTML | <! - Obsah komentáře -> |
| nižší úroveň skrytá | <! - [pokud výraz ]> HTML <! [endif] -> |
| nižší úroveň odhalena | <! [pokud výraz ]> HTML <! [endif]> |
HTML zobrazen uvnitř syntaxe bloku v každém z podmíněných komentářů označuje jakýkoliv blok obsahu HTML, včetně scénáře. Oba typy podmíněného komentáře používají podmíněný výraz k označení, zda má být obsah uvnitř bloku komentáře analyzován nebo ignorován. Podmíněný výraz je tvořen kombinací prvku, operátoru a / nebo hodnoty v závislosti na prvku. Následující tabulka ukazuje podporované funkce a popisuje hodnoty, které každá funkce podporuje.
| Položka | Příklad | Komentář |
|---|---|---|
| TJ | [pokud IE] | Řetězec „IE“ je funkce odpovídající verzi aplikace Internet Explorer, která se používá k zobrazení webové stránky. |
| hodnota | [pokud IE 7] | Celé číslo nebo číslice s plovoucí desetinnou čárkou odpovídající verzi prohlížeče. Vrátí logickou hodnotu true, pokud se číslo verze shoduje s verzí prohlížeče. Další informace najdete v části vektory verzí . |
| WindowsEdition | [pokud WindowsEdition] | Internet Explorer 8 v systému Windows 7. Řetězec „WindowsEdition“ je funkce odpovídající vydání systému Microsoft Windows používaného k prohlížení webové stránky. |
| hodnota | [pokud Windows Edition 1] | Celé číslo odpovídající vydání systému Windows použité k zobrazení webové stránky. Vrátí logickou hodnotu true, pokud se hodnota shoduje s používanou edicí. Informace o podporovaných hodnotách a edicích, které popisují, najdete v parametru pdwReturnedProductType funkce GetProductInfo. |
| skutečný | [pokud je to pravda] | Vždy se vyhodnotí jako true. |
| Nepravdivé | [pokud je nepravdivé] | Vždy se vyhodnotí jako nepravdivé. |
Následující tabulka popisuje operátory, které lze použít k vytvoření podmíněných výrazů.
| Položka | Příklad | Komentář |
|---|---|---|
| ! | [pokud! IE] | Operátor NOT. Toto je umístěno bezprostředně před prvek , operátor nebo podvýraz, aby se zvrátil booleovský význam výrazu. |
| lt | [pokud lt IE 5.5] | Operátor méně než. Vrátí true, pokud je první argument menší než druhý argument. |
| lte | [pokud lte IE 6] | Operátor menší než nebo rovný. Vrátí hodnotu true, pokud je první argument menší nebo roven druhému argumentu. |
| gt | [pokud gt IE 5] | Operátor větší než. Vrátí true, pokud je první argument větší než druhý argument. |
| gte | [pokud gte IE 7] | Operátor větší než nebo rovný. Vrátí true, pokud je první argument větší nebo roven druhému argumentu. |
| () | [pokud! (IE 7)] | Subexpresní operátoři. Používá se ve spojení s booleovskými operátory k vytváření složitějších výrazů. |
| & | [pokud (gt IE 5) & (lt IE 7)] | Operátor AND. Vrátí true, pokud se všechny dílčí výrazy vyhodnotí jako true |
| | | [pokud (IE 6) | (IE 7)] | Operátor OR. Vrátí true, pokud se některý z dílčích výrazů vyhodnotí jako true. |
Níže jsou uvedeny dva příklady podmíněného komentáře „nižší úrovně skryté“:
<!--[if IE 8]>
<link href="ie8only.css" rel="stylesheet">
<![endif]-->
nebo
<!--[if lte IE 7]>
<style type="text/css">
/* CSS here */
</style>
<![endif]-->
Směrnice v prvním příkladu umožní IE 8 přečíst zadaný soubor CSS, zatímco IE 7 nebo starší verze IE jej budou ignorovat. Jiné prohlížeče než IE to také budou ignorovat, protože to vypadá jako standardní komentář HTML. Značka ve druhém příkladu umožní IE verzím 5.0 až 7 číst interní styl CSS. Při různých použitích této značky můžete také oddělit IE 6, IE 5 nebo verze IE, které jsou novější (větší) nebo starší (méně) než zadaná verze.
Podmíněný komentář odhalený v nižší úrovni
Níže je uveden příklad podmíněného „komentáře“ „nižší úrovně odhaleného“, který vůbec není (X) HTML komentářem, a to navzdory zavádějícímu názvu pomocí výchozí syntaxe společnosti Microsoft:
<![if !IE]>
<link href="non-ie.css" rel="stylesheet">
<![endif]>
Tento příklad ukazuje obsah, který by měl být vystaven pouze jiným prohlížečům než IE, protože podmínka se v IE vyhodnotí jako „false“ (a proto je obsah ignorován), zatímco samotné značky jsou nerozpoznané (a tudíž ignorované) v prohlížečích jiných než IE. . Toto není platný HTML nebo XHTML.
Společnost Microsoft uznává, že tato syntaxe není standardizovaným značením, má v úmyslu tyto značky přehlížet jinými prohlížeči a vystavovat obsah uprostřed. Aby bylo zajištěno dodržování standardů W3C, používají někteří weboví vývojáři alternativní techniku pro podmíněné komentáře odhalené na nižší úrovni:
<!--[if !IE]>-->
<link href="non-ie.css" rel="stylesheet">
<!--<![endif]-->
I když je struktura poněkud matoucí, je tato specifická syntaxe platným (X) HTML a je užitečná pro podmíněné sekce určené speciálně pro jiné prohlížeče než IE; pokud je podmínka vyhodnocena jako pravdivá (například pokud psaní kódu znamená zobrazení v prohlížečích jiných než IE a v některých verzích IE), IE poté zobrazí obsah „->“ před obsahem HTML. Tento problém lze snadno vyřešit předponou „<!“ na počáteční "->" takto:
<!--[if gt IE 6]><!-->
This code displays on non-IE browsers and on IE 7 or higher.
<!--<![endif]-->
Extra „<!“ je ignorován jinými prohlížeči než IE; je také IE ignorován bez ohledu na podmínku, protože pokud je false , vše v podmíněném komentáři je ignorováno, a pokud je true , výsledná značka <!--> je nerozpoznána, a proto je ignorována.
Podmíněné komentáře v JScript
Počínaje aplikací Internet Explorer 4 existuje podobný proprietární mechanismus pro přidávání podmíněných komentářů v rámci JScript , známý jako podmíněná kompilace.
Příklady kódu:
<script>
/*@cc_on
document.write("You are using IE4 or higher");
@*/
</script>
Tam bylo také několik předdefinovaných proměnných, i když se na ně již nelze spolehnout, protože Microsoft změnil JScript engine IE6 s XP SP3 a nyní hlásí jako:
@_jscript_version == 5.7
Níže je uveden možný způsob detekce verze aplikace Internet Explorer pomocí podmíněné kompilace:
<script>
/*@cc_on
@if (@_jscript_version == 11)
document.write("You are using IE11 with an older document mode");
@elif (@_jscript_version == 10)
document.write("You are using IE10");
@elif (@_jscript_version == 9)
document.write("You are using IE9");
@elif (@_jscript_version == 5.8)
document.write("You are using IE8");
@elif (@_jscript_version == 5.7)
document.write("You are using IE" + (!window.XMLHttpRequest ? 6 : 7));
@elif (@_jscript_version == 5.6)
document.write("You are using IE6");
@elif (@_jscript_version == 5.5)
document.write("You are using IE5.5");
@elif (@_jscript_version < 5.5)
document.write("You are using a version older than IE5.5");
@else
document.write("You are using an unknown version of IE");
@end
@*/
</script>
Podmíněná kompilace však již není podporována v režimu standardů aplikace Internet Explorer 11 .