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

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

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

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

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

Ответ 1

В соответствии с до Jacob Rossi [MSFT]

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

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

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

Ответ 2

Я просто попытался использовать это в 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, что делает изменения.

Ответ 3

Это сработало для меня и кажется самым элегантным/легким решением (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 */
}

Ответ 4

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

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

Ответ 5

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

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

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

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

Ответ 6

У меня была одна и та же проблема - все это заводило меня орехами. Я добавил 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 инструментов для разработчиков.

Ответ 7

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

  • В IE11 нажмите "Инструменты"
  • Параметры просмотра совместимости
  • Введите URL-адрес и нажмите Добавить

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

Ответ 8

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

Хотя условные комментарии не работают, вы все равно можете проверить, как выглядит ваша веб-страница в каждой из версий Internet Explorer, добавляя таблицы стилей по одному: пусть у вас есть таблица стилей для Firefox, Chrome, Internet Explorer 10 и Internet 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, а строка агента пользователя - это сам браузер.

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" />

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