Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

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

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

<! - [если 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]

См. Также [ править ]

Внешние ссылки [ править ]

Ссылки [ править ]

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