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

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

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

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

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

Ответ 1

Условные комментарии - это правило, зависящее от 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 не отображал --> перед кодом. Другие браузеры по-прежнему будут считать это частью комментария.