Условный комментарий - Conditional comment

Условные комментарии находятся условные утверждения интерпретируется Microsoft Internet Explorer версии 5 через 9 в HTML исходный код. Их можно использовать для предоставления и скрытия кода для этих версий Internet Explorer. Условные комментарии не поддерживаются в Internet Explorer 10 и 11.

Условные комментарии в HTML[1] впервые появился в браузере Microsoft Internet Explorer 5, хотя поддержка теперь устарела. В Internet Explorer 10 условные комментарии HTML не поддерживаются, когда страница находится в стандартном режиме (режим документа 10).[2] JScript условные комментарии были введены в Internet Explorer 4, и они продолжали поддерживаться в Internet Explorer 10 в стандартном режиме или режиме совместимости.

Примеры

Вот простой пример, демонстрирующий, как работают условные комментарии.

<!--[if IE 6]><p>You are using Internet Explorer 6.</p><![endif]-->

Синтаксис

Есть два типа «условных комментариев»: нижний уровень раскрыт, и нижний уровень скрыт.

Базовый синтаксис каждого типа комментария показан в следующей таблице. Первый показанный комментарий является основным комментарием HTML, который включен в целях сравнения и для иллюстрации различного синтаксиса, используемого каждым типом условного комментария.

Тип комментарияСинтаксис или возможное значение
стандартный комментарий HTML<!-- Comment content  -->
скрытый на нижнем уровневыражение]> HTML <![endif]-->
на нижнем уровневыражение]> HTML <![endif]>

В HTML Показанный внутри блока синтаксиса в каждом из условных комментариев обозначает любой блок содержимого HTML, включая сценарий. Оба типа условного комментария используют условное выражение чтобы указать, следует ли анализировать содержимое внутри блока комментариев или игнорировать. Условное выражение формируется из комбинации признака, оператора и / или значения, в зависимости от признака. В следующей таблице показаны поддерживаемые функции и описаны значения, поддерживаемые каждой функцией.

ПредметпримерКомментарий
IE[если IE]Строка "IE" - это особенность соответствует версии Internet Explorer, используемой для просмотра веб-страницы.
ценность[если IE 7]Целое число или число с плавающей запятой, соответствующее версия браузера. Возвращает логическое значение true, если номер версии соответствует версии браузера. Для получения дополнительной информации см. Векторы версий.
WindowsEdition[если WindowsEdition]Internet Explorer 8 в Windows 7. Строка "WindowsEdition" - это особенность соответствует редакции Microsoft Windows, используемой для просмотра веб-страницы.
ценность[если WindowsEdition 1]Целое число, соответствующее издание Windows, используемой для просмотра веб-страницы. Возвращает логическое значение true, если значение соответствует используемой редакции. Для получения информации о поддерживаемых значениях и описываемых ими выпусках см. pdwReturnedProductType параметр функции GetProductInfo.
правда[если правда]Всегда оценивается как истина.
ложный[если неверно]Всегда оценивается как ложь.

В следующей таблице описаны операторы, которые можно использовать для создания условных выражений.

ПредметпримерКомментарий
![если! IE]Оператор НЕ. Он помещается непосредственно перед особенность, оператор, или подвыражение для изменения логического значения выражения.
lt[если lt IE 5.5]Оператор «меньше». Возвращает истину, если первый аргумент меньше второго.
lte[если lte IE 6]Оператор «меньше или равно». Возвращает истину, если первый аргумент меньше или равен второму аргументу.
gt[если gt IE 5]Оператор "больше". Возвращает истину, если первый аргумент больше второго.
gte[если gte IE 7]Оператор больше или равно. Возвращает истину, если первый аргумент больше или равен второму аргументу.
( )[если! (IE 7)]Операторы подвыражения. Используется вместе с логическими операторами для создания более сложных выражений.
&[if (gt IE 5) & (lt IE 7)]Оператор И. Возвращает истину, если все подвыражения имеют значение истина.
|[если (IE 6) | (IE 7)]Оператор ИЛИ. Возвращает истину, если какое-либо из подвыражений имеет значение истина.

Условный комментарий, скрытый на нижнем уровне

Ниже приведены два примера условного комментария «скрытый нижний уровень»:

<!--[if IE 8]><link href="ie8only.css" rel="stylesheet"><![endif]-->

или

<!--[if lte IE 7]><style type="text/css">/ * CSS здесь * /</style><![endif]-->

Директива в первом примере позволит IE 8 читать указанный файл CSS, в то время как IE 7 или более ранние версии IE игнорируют его. Браузеры, отличные от IE, также проигнорируют его, потому что он выглядит как стандартный комментарий HTML. Тег во втором примере позволит IE версий с 5.0 по 7 читать внутренний стиль CSS. При различных вариантах использования этого тега вы также можете выделить IE 6, IE 5 или версии IE, которые новее (выше) или старше (меньше), чем указанная версия.

Условный комментарий, обнаруженный на нижнем уровне

Ниже приведен пример условного «комментария» «раскрыт на нижнем уровне», который не (X) HTML комментарий вообще, несмотря на вводящее в заблуждение название, используя синтаксис Microsoft по умолчанию:

<![if !IE]><ссылка на сайт href="non-ie.css" rel="таблица стилей"><![endif]>

В этом примере показано содержимое, которое должно быть доступно только для браузеров, отличных от IE, так как условие оценивается как "false" в IE (и, следовательно, контент игнорируется), а сами теги не распознаются (и, следовательно, игнорируются) в браузерах, отличных от IE. . Это недопустимый HTML или XHTML.

Microsoft признает, что этот синтаксис не является стандартизированной разметкой,[3] предполагая, что эти теги будут игнорироваться другими браузерами и отображать контент в середине. Чтобы обеспечить соответствие стандартам W3C, некоторые веб-разработчики используют альтернативную технику.[4] для условных комментариев с нижнего уровня:

<!--[if !IE]>--><ссылка на сайт href="non-ie.css" rel="таблица стилей"><!--<![endif]-->

Хотя этот синтаксис несколько сбивает с толку по структуре, он является допустимым (X) HTML и полезен для условных разделов, предназначенных специально для браузеров, отличных от IE; если условие оценивается как правда (например, при написании кода, предназначенного для отображения в браузерах, отличных от IE и в некоторых версиях IE) IE будет отображать "->" перед содержимым HTML. Эту проблему легко решить, добавив "" следующим образом:

<!--[if gt IE 6]><!-->Этот код отображается в браузерах, отличных от IE, и в IE 7 или выше.<!--<![endif]-->

Дополнительный "ложный, все в условном комментарии игнорируется, и если правда, результирующий тег <!--> не распознается и поэтому игнорируется.

Условные комментарии в JScript

Начиная с Internet Explorer 4, существует аналогичный собственный механизм для добавления условных комментариев в JScript, известная как условная компиляция.[5]

Примеры кода:

<сценарий>/ * @ cc_on  document.write («Вы используете IE4 или выше»);@*/</сценарий>

Также было несколько предопределенных переменных,[6] хотя на них больше нельзя полагаться, поскольку Microsoft изменила движок JScript IE6 на XP SP3, и теперь он сообщает как:

@_jscript_version == 5.7

В результате возможный способ определения версии Internet Explorer с помощью условной компиляции можно увидеть ниже:

<сценарий>/ * @ cc_on  @if (@_jscript_version == 11)    document.write ("Вы используете IE11 со старым режимом документа");  @elif (@_jscript_version == 10)    document.write ("Вы используете IE10");  @elif (@_jscript_version == 9)    document.write ("Вы используете IE9");  @elif (@_jscript_version == 5.8)    document.write ("Вы используете IE8");  @elif (@_jscript_version == 5.7)    document.write ("Вы используете IE" + (! window.XMLHttpRequest? 6: 7));  @elif (@_jscript_version == 5.6)    document.write ("Вы используете IE6");  @elif (@_jscript_version == 5.5)    document.write ("Вы используете IE5.5");  @elif (@_jscript_version <5.5)    document.write («Вы используете версию старше IE5.5»);  @else    document.write («Вы используете неизвестную версию IE»);  @конец@*/</сценарий>

Однако условная компиляция больше не поддерживается в Internet Explorer 11 Стандартный режим.[7]

Смотрите также

использованная литература

  1. ^ «Об условных комментариях». Корпорация Майкрософт. Архивировано из оригинал на 2008-10-13. Получено 2007-10-24.
  2. ^ Microsoft - Разбор HTML5 в IE10
  3. ^ «MSDN - Об условных комментариях». Архивировано из оригинал на 2008-03-15. Получено 2007-01-03.
  4. ^ «Действительные условные комментарии, выявленные на нижнем уровне | 456 Berea Street». Архивировано из оригинал в 2014-08-19. Получено 2007-12-29.
  5. ^ «Условная компиляция». Корпорация Майкрософт. Архивировано из оригинал на 2008-09-06. Получено 2007-12-29.
  6. ^ Переменные условной компиляции
  7. ^ https://msdn.microsoft.com/library/8ka90k2e(v=vs.94).aspx Заявление @cc_on (JavaScript)