Когда будет использоваться <! - [if! IE]>? - PullRequest
6 голосов
/ 11 февраля 2011

Я размышлял над этим вопросом вчера вечером, когда отлаживал некоторые вещи в IE7, когда я набрал <!--[if IE7]>..., мне пришло в голову, что я видел <!--[if !IE]>.

.Насколько я понимаю, только IE распознает эти условные комментарии, так что, скажем, if NOT IE не имеет смысла, IE видит это и говорит: "Iam IE, так что это не относится ко мне?"или люди путаются, с какими браузерами это можно узнать?

Итак, мой вопрос.

Где бы вы использовали <!--[if !IE]> и какова его цель?

Ответы [ 4 ]

17 голосов
/ 11 февраля 2011

Вы можете использовать его со специальным синтаксисом:

<!--[if !(IE)]><!--> <html lang="en" class="no-js"> <!--<![endif]-->

Это означает, что IE игнорирует промежуточное положение, но другие браузеры обрабатывают условные комментарии как закрытые комментарии и интерпретируют промежуточное.

2 голосов
/ 11 февраля 2011

Чтобы подтвердить ваше подозрение, бессмысленно указывать его в своем HTML, так как большинство или все браузеры игнорируют содержимое блока комментариев.

Может быть полезно использовать оператор отрицания при желании исключить конкретную версию, хотя, например, <! - [if! (IE 6)]> будет анализироваться во всех версиях IE (начиная с IE5), но не в IE6.

http://msdn.microsoft.com/en-us/library/ms537512(v=vs.85).aspx

2 голосов
/ 11 февраля 2011

Я бы сказал, что было бы, если бы вы хотели запустить скрипт, который работает в любом браузере, кроме IE, так как IE не будет его запускать ...

1 голос
/ 11 февраля 2011

AFAIK, другие браузеры обрабатывают условные комментарии как блоки комментариев (т. Е. Они вообще не анализируются).Таким образом, такой комментарий заставит что-то произойти (т.е. включит файл CSS) во что-либо, КРОМЕ Internet Explorer (так что это обратное условным комментариям [if IE]).Добавьте все свои CSS в такие комментарии и посмотрите, как ведет себя IE: P.

[EDIT]

ОК, я только что проверил.Это действительно глупо.Поскольку тег <style> находится в CC, другие браузеры его вообще не анализируют, поэтому он фактически вообще не включается.IE действительно интерпретирует это как «ага, я IE, поэтому мне нужно пропустить это».Единственное разумное объяснение, которое я могу придумать, - Microsoft предполагает, что в какой-то момент другие браузеры могут начать синтаксический анализ условных комментариев.

...