Условные комментарии являются условные операторы , интерпретированные 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> Вы используете Internet Explorer 6. </p> <! [endif] ->
Синтаксис [ править ]
Есть два типа «условных комментарии»: Downlevel показал , и нижний уровень скрыт .
Базовый синтаксис каждого типа комментария показан в следующей таблице. Первый показанный комментарий является основным комментарием HTML, который включен с целью сравнения и для иллюстрации различного синтаксиса, используемого каждым типом условного комментария.
Тип комментария | Синтаксис или возможное значение |
---|---|
стандартный HTML-комментарий | <! - Содержание комментария -> |
скрытый на нижнем уровне | <! - [if выражение ]> HTML <! [endif] -> |
раскрытый на нижнем уровне | <! [if выражение ]> 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)] | Оператор ИЛИ. Возвращает истину, если какое-либо из подвыражений имеет значение истина. |
[ править ]
Ниже приведены два примера условного комментария «скрытый нижний уровень»:
<! - [если 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]> < link href = "non-ie.css" rel = "stylesheet" > <! [endif]>
В этом примере показано содержимое, которое должно быть доступно только для браузеров, отличных от IE, поскольку условие оценивается как "false" в IE (и, следовательно, содержимое игнорируется), в то время как сами теги не распознаются (и, следовательно, игнорируются) в браузерах, отличных от IE. . Это недопустимый HTML или XHTML.
Microsoft признает, что этот синтаксис не является стандартизованной разметкой [3], предполагая, что эти теги будут игнорироваться другими браузерами и отображать содержимое посередине. Чтобы обеспечить соответствие стандартам W3C, некоторые веб-разработчики используют альтернативную технику [4] для условных комментариев нижнего уровня:
<! - [if! IE]> -> < link href = "non-ie.css" rel = "stylesheet" > <! - <! [endif] ->
Несмотря на несколько запутанную структуру, этот конкретный синтаксис является допустимым (X) HTML и полезен для условных разделов, предназначенных специально для браузеров, отличных от IE; если условие истинно (например, при написании кода, предназначенного для отображения в браузерах, отличных от IE, и в некоторых версиях IE), IE затем отобразит «->» перед содержимым HTML. Эта проблема легко решается добавлением "<!" к начальному "->" следующим образом:
<! - [если gt IE 6]> <! ->Этот код отображается в браузерах, отличных от IE, и в IE 7 или более поздних версиях.<! - <! [endif] ->
Дополнительный "<!" игнорируется браузерами, отличными от IE; он также игнорируется IE независимо от условия, потому что если false , все в условном комментарии игнорируется, а если true , результирующий тег <!-->
не распознается и, следовательно, игнорируется.
Условные комментарии в JScript [ править ]
Начиная с Internet Explorer 4, существует аналогичный собственный механизм для добавления условных комментариев в JScript , известный как условная компиляция. [5]
Примеры кода:
< script > / * @ 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»); @end @ * / </ скрипт >
Однако условная компиляция больше не поддерживается в стандартном режиме Internet Explorer 11 . [7]
См. Также [ править ]
Внешние ссылки [ править ]
Ссылки [ править ]
- ^ «Об условных комментариях» . Корпорация Майкрософт. Архивировано из оригинала на 2008-10-13 . Проверено 24 октября 2007 .
- ^ Microsoft - Разбор HTML5 в IE10
- ^ «MSDN - Об условных комментариях» . Архивировано из оригинала на 2008-03-15 . Проверено 3 января 2007 . CS1 maint: обескураженный параметр ( ссылка )
- ^ "Действительные условные комментарии, выявленные на нижнем уровне | 456 Berea Street" . Архивировано из оригинала на 2014-08-19 . Проверено 29 декабря 2007 .
- ^ «Условная компиляция» . Корпорация Майкрософт. Архивировано из оригинала на 2008-09-06 . Проверено 29 декабря 2007 .
- ^ Условные переменные компиляции
- ^ https://msdn.microsoft.com/library/8ka90k2e(v=vs.94).aspx Заявление @cc_on (JavaScript)