2009-12-30 6 views
1

Должна ли эта работа?Условные комментарии IE работают inline?

<!--[if IE]> 
<link rel="stylesheet" type="text/css" href="/minify/css?f=ie8.css<!--[if lte IE 7]>,ie7.css<![endif]--><!--[if lte IE 6]>,ie6.css<![endif]-->" /> 
<![endif]--> 

Видимо, вложенные комментарии не работают, так что насчет этого?

<link rel="stylesheet" type="text/css" href="/minify/css?f=someotherfile.css<!--[if IE]>,ie8.css<![endif]--><!--[if lte IE 7]>,ie7.css<![endif]--><!--[if lte IE 6]>,ie6.css<![endif]-->" /> 
+1

Это не работает по той же причине, что '/ * begin-comment/* broken! */end-comment */'не работает. Вложенные вещи, которые не гнездятся, ломаются. –

ответ

3

Нет, условные комментарии не обработка макро-стиль выше HTML; они могут идти только туда, где могут быть обычные комментарии HTML. Комментарии не могут войти в теги.

Поэтому:

<!--[if lt IE 7]><link rel="stylesheet" type="text/css" href="/minify/css?f=ie8.css,ie7.css,ie6.css"><![endif]--> 
<!--[if (gte IE 7)&(lt IE 8)]><link rel="stylesheet" type="text/css" href="/minify/css?f=ie8.css,ie7.css"><![endif]--> 
<!--[if (gte IE 8)&(lt IE 9)]><link rel="stylesheet" type="text/css" href="/minify/css?f=ie8.css"><![endif]--> 

(Есть ли у вас достаточно правил IE-Hack, что оправданные отдельная таблица стилей, даже для IE8 Этот браузер, как правило, довольно хорошо себя, до тех пор, как это не в режиме совместимости Если у вас есть только несколько правил, this tip может быть полезным.)

+0

К сожалению, мне не нужно, сколько таблиц стилей необходимо - мы пытаемся разрешить пользователям приводить таблицы стилей на сайте сообщества, и есть много жалоб на проблемы с IE, поэтому нам нужно решение, подобное этому. Если бы это было до меня, мы бы не использовали их вообще. ;) –

0

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

Не-IE браузер прочитает его так, как это подчеркивает синтаксис сайтов.

Чтобы исправить это, удалите закрытие -- из вложенных комментариев, чтобы скрыть его от обычных браузеров.
Затем он должен работать нормально.

Например:

<!--[if IE]> 
<link rel="stylesheet" type="text/css" href="/minify/css?f=ie8.css<![if lte IE 7]>,ie7.css<![endif]><![if lte IE 6]>,ie6.css<![endif]>" /> 
<![endif]--> 
+0

Что касается того, была ли удалена содержащая часть