Условный комментарий в IE 9. Пробел между комментарием и условным оператором - PullRequest
2 голосов
/ 16 марта 2012

Я использую следующий условный оператор IE для загрузки специфичной для IE таблицы стилей. Заявление работает в IE 7, 8 и 9 Compatibility View. Однако, когда я просматривал страницу в обычном IE 9, страница была пустой. Я проверил его в инструментах разработчика, и кажется, что условное выражение никогда не закрывается, эффективно комментируя остальную часть страницы.

<!--[if lt IE 9]><link xmlns="" rel="stylesheet" href="http://colum.edu/Site_Files/localist/css/ie.css" /><[endif]-->

После приличной стрижки волос я наконец понял, что если я добавлю пробел перед скобками для условного комментария, этот комментарий будет работать в IE 9:

<!-- [if lt IE 9]><link xmlns="" rel="stylesheet" href="http://colum.edu/Site_Files/localist/css/ie.css" /><[endif]-->

Разница лишь в том, что между комментарием и условным выражением есть пробел ...

<!--[if lt IE 9]>   vs   <!-- [if lt IE 9]>

Я не могу понять, почему на земле это происходит. Опять же, это происходит только в «Режим браузера: IE9», а не «Режим браузера: представление совместимости IE9» с «Режимом документа: стандарты IE9». (Я понимаю, что самое простое решение - это добавить пространство. Однако реальная страница живет в размещенной службе, и я ограничен в том, что могу редактировать.) В любом случае, вот несколько примеров:

Не работает: http://dev.ashramcreative.com/ccc/localist/ie9.html

Рабочая: http://dev.ashramcreative.com/ccc/localist/ie9-space.html

1 Ответ

4 голосов
/ 08 апреля 2012

Я просто столкнулся с тем же; и добавление пробела перед условно исправленным IE9 в режиме браузера.

После прочтения этого поста я смог определить, что виноват метатег.

После того, как я исправил метатег (в моем случае meta http-equiv=content-type), IE9 в режиме браузера работал правильно без пробела.

Однако в вашем случае это выглядит так, как будто <[endif]--> должно быть <![endif]-->

...