11

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

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

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

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

ответ

42

Условные комментарии являются стандартом IE для 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.

EDIT

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

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

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

+0

Я действительно хочу, чтобы код отображался для IE 8 и IE 9, а не версии IE до этого. Я также хочу, чтобы код отображался в Chrome и Firefox. – Baxter

+1

До тех пор, пока вы закрываете комментарии, я думаю, что это должно быть сделано для любого условия. – zebasz

+1

Я протестировал его, не совсем работает. Я нашел обходное решение, поэтому я отредактирую и добавлю его. – zebasz