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

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

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

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

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

8 ответов

Решение

По словам 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 */
}

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

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" />');
}

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

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

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

Другой альтернативой, которая мне показалась более полезной, было использование службы, подобной браузерному стеку.

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

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

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

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

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

  1. В IE11 нажмите "Инструменты"
  2. Совместимость просмотра настроек
  3. Введите URL-адрес и нажмите кнопку Добавить

Кажется, теперь работает нормально на моем 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 8screen-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, а строка агента пользователя - это сам браузер.

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

Делая это, вы можете быть "уверены" (мне нужно проверить виртуальные машины, чтобы написать слово "уверен" без кавычек), что вы просматриваете свою веб-страницу в браузере 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 предлагают МНОГО потрясающих функций, что делает это не такой уж большой проблемой.