Почему Internet Explorer 11 не выполняет условные комментарии даже при эмуляции режима документа Internet Explorer 8?

Я использую новый Internet Explorer 11 инструменты разработчика для переключения режима документа на "8", но условные комментарии по-прежнему игнорируются, то есть они неправильно анализируются и ведут себя как обычные комментарии. Таким образом, любой ссылочный файл внутри условного комментария не запрашивается/не загружается браузером.

Почему это происходит? Это жук?

Если вы думаете, что это действительно ошибка, которую нужно исправить, пожалуйста, зайдите и скажите, что Вы тоже можете воспроизвести это в отчете об ошибке Microsoft, который сообщается для этой проблемы:
условные комментарии не работают при эмуляции режимов документа с помощью инструментов разработчика F12.

обновление: эта проблема была исправлена в упомянутом отчете об ошибке.

8 ответов


по данным to Jacob Rossi [MSFT]

Это должно быть исправлено в обновлении 1 для IE11, выпущенный на прошлой неделе.

Это было опубликовано 22 апреля 2014 года.

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


Я просто попытался использовать это в Internet Explorer 11 на Windows 7, чтобы убедиться, что мой используется в HTML5 семантические элементы создавались для Internet Explorer 8 и ниже (через условные комментарии), и браузер просто игнорирует их. - _ -

эта функция отлично работала в Internet Explorer 10, и Microsoft просто пришлось возиться с этим, не так ли?

<!--[if lte IE 8]><script src="ie8-html5.js"></script><![endif]-->

помимо этого, я на самом деле наслаждаясь Internet Explorer, что делает для изменения.


это сработало для меня и кажется самым элегантным / легким исправлением (Internet Explorer 10 и Internet Explorer 11 Я думаю, это единственные браузеры, которые поддерживают -ms-high-contract):

@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {  
   /* IE10+ specific styles go here */
}

недавно я столкнулся с той же проблемой. Я также обнаружил, что некоторые условные комментарии работают:

  • gt и lt работало
  • gte и lte никогда не работал

таким образом, одним из потенциальных решений было бы изменение условных операторов для использования gt и lt операторы.

другой альтернативой, которую я нашел более полезной, было использование сервиса, такого как browserstack.


У меня есть другое решение для этого.

Internet Explorer 11 при включенном режиме совместимости Internet Explorer 8 содержит строку "MSIE 8.0", поэтому:

(пример PHP)

if (strpos($_SERVER['HTTP_USER_AGENT'],'MSIE 8.0') !== false) {
    $head[] = sprintf('<link rel="stylesheet" href="ie8.css" />');
}

У меня была та же проблема - это сводило меня с ума все утро. Я добавил Modernizr, и я выбрал все варианты, включая yepnope.js.

Итак, мой тест выглядит так:

Modernizr.load({
            test: Modernizr.canvas,
            nope: ['Content/Site-ie-8.min.css', 'Content/font-awesome-ie7.min.css']
});

в этом случае я тестирую canvas (который не поддерживается до Internet Explorer 9), поэтому я загружаю свой условный контент. Теперь это работает при переключении режимов браузера в инструментах разработчика Internet Explorer 11.


Я не видел, чтобы он упоминался здесь, но в этом сообщить об ошибке отмечается, что при изменении параметров представления совместимости условные комментарии работают должным образом. Итак:

  1. в IE11 нажмите "Инструменты"
  2. параметры просмотра в режиме совместимости
  3. введите URL-адрес и нажмите Add

кажется, теперь работает нормально на моем localhost. Я не тестировал это широко, но, возможно, это поможет кому-то.


некоторые из условных комментариев работают, такие как'gt' и 'lt', но например <!--[if IE 8]> не работает. Это, безусловно, неудобно для разработчиков, которые хотят попробовать, как их веб-страницы выглядят на разных версиях браузеров Internet Explorer, но это не все плохие новости.

хотя условные комментарии не работают, вы все равно можете проверить, как ваша веб-страница выглядит в каждой из версий Internet Explorer, добавляя таблицы стилей по одному: давайте скажем, у вас есть таблица стилей для Firefox, Chrome, Internet Explorer 10 и Internet Explorer 11 под названием"screen.css', а другая таблица стилей только для Internet Explorer 9 называется"screen-ie9.css 'и еще один только для Internet Explorer 8 под названием'screen-ie8.css'.

чтобы проверить свои веб-страницы только для Internet Explorer 9, вы можете сделать следующее:

<link rel="stylesheet" href="path/css/screen.css"     type="text/css" />
<link rel="stylesheet" href="path/css/screen-ie9.css" type="text/css" />

и в разделе средства разработчика F12, эмуляция, установите "режим документа" в " 9 " и "строка агента пользователя" в "Internet Explorer 9". Режим документа-это стандарт, используемый Internet Explorer 9, а строка агента пользователя-это сам браузер.

П. С.: я предполагаю, что 'screen.css ' ваша базовая таблица стилей, которая является причиной, по которой я называю ее первой, чем "перезапись" Internet Explorer 9 исправляет позже, вызывая"screen-ie9.css' второй.

делая это, вы можете быть "уверены" (я должен проверить с помощью VMs, чтобы написать слово "уверен" без кавычек), что вы просматриваете веб-страница в браузере Internet Explorer 9. Когда вы закончите тестирование и стиль в Internet Explorer 9, и вы хотите протестировать с Internet Explorer 8, вы можете легко сделать тот же трюк, заменив это:

<link rel="stylesheet" href="path/css/screen-ie9.css" type="text/css" />

С этого:

<link rel="stylesheet" href="path/css/screen-ie8.css" type="text/css" />

Итак, это всего лишь вопрос незначительных неудобств со стороны Microsoft, но новые инструменты разработчиков F12 предлагают множество удивительных функций, что делает это не так уж и важно.