Условные комментарии IE и Chrome/Firefox

Я использую следующий условный комментарий IE:

<!--[if gt IE 7]>
Here is some code.
<![endif]-->

Это прекрасно работает, чтобы код не отображался в любом IE ниже 8.
Однако это также предотвращает отображение кода в Chrome и Firefox.

Любые идеи о том, почему это происходит, и как я могу заставить код отображаться в браузерах, отличных от IE?


person Baxter    schedule 15.04.2012    source источник


Ответы (1)


Условные комментарии — это правило, специфичное для Microsoft IE, и они не являются частью какого-либо стандарта. Если вы проверите структуру условного комментария:

<!--[if gt IE 7]>
Here is some code.
<![endif]-->

Как следует из названия, это всего лишь большой комментарий <!-- comment -->. IE проверяет комментарии на наличие таких условий, которые, опять же, не соответствуют стандартам HTML.

Чтобы создать код, который не отображается в IE, но отображается в других браузерах, вы используете следующее условие:

<!--[if !IE]> -->
This will be rendered by anything but IE.
<!-- <![endif]-->

Видите, как условия заключены в закрытые комментарии? Вот почему это отображается в обычных браузерах, в то время как IE проверяет условность и решает опустить все до endif.

РЕДАКТИРОВАТЬ

Если вы хотите добавить еще одно условие и продолжать отображать код в браузерах, отличных от IE, вы можете использовать следующий обходной путь:

<!--[if gt IE 7]> <!-- -->
Here is some code for anything but IE 7 and below.
<!-- <![endif]-->

Обратите внимание, что мне пришлось снова открыть комментарий, чтобы IE не отображал --> перед кодом. Другие браузеры по-прежнему будут считать это частью комментария.

person zebasz    schedule 15.04.2012
comment
Я хочу, чтобы код отображался для IE 8 и IE 9, но до этого не было версии IE. Я также хочу, чтобы код отображался в Chrome и Firefox. - person Baxter; 15.04.2012
comment
Пока вы закрываете комментарии, я думаю, это должно сработать при любых условиях. - person zebasz; 15.04.2012
comment
Я проверял, не совсем работает. Я нашел обходной путь, поэтому я отредактирую и добавлю его. - person zebasz; 15.04.2012