Почему 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 предлагают множество потрясающих функций, что делает это не так уж и много.