Почему 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.
Я не видел, чтобы он упоминался здесь, но в этом сообщить об ошибке отмечается, что при изменении параметров представления совместимости условные комментарии работают должным образом. Итак:
- в IE11 нажмите "Инструменты"
- параметры просмотра в режиме совместимости
- введите 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 предлагают множество удивительных функций, что делает это не так уж и важно.