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


110

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

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

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

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


18
Задаю себе тот же вопрос! Я знаю, что они сбросили условные комментарии в IE10, но ИМХО эмулятор должен учитывать их при тестировании старых браузеров.
Александр Рехштайнер

12
Действительно, это делает эту функцию непригодной для использования.
thasmo

3
Настоящий вопрос в том, почему вы используете режим совместимости? Мой совет - избегать режима совместимости, как чумы. Он определенно не подходит для тестирования, независимо от проблемы, которую вы описали, поскольку с ним связаны известные ошибки и причуды, которые восходят к тому моменту, когда они впервые представили режим совместимости. Если вы тестируете обратную совместимость, вам действительно нужно использовать настоящую копию IE8 (и IE9 и т. Д.). Перейдите на modern.ie и загрузите виртуальные машины, которые они предоставляют для тестирования.
Spudley

19
В системе отслеживания ошибок IE обнаружена ошибка. Я призываю всех посетить и сказать Microsoft, что вы можете воспроизвести это. connect.microsoft.com/IE/feedback/details/806767/…
Евгений

15
Я думаю, что использование режима совместимости для тестирования имеет больше смысла, чем загрузка 1/2 гигабайта или около того изображения для каждого браузера. Итак, есть ошибки (и это, вероятно, одна из них), но в 99% случаев это просто работает.
Rolf

Ответы:


29

согласно сJacob Rossi [MSFT]

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

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

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


4
За это нужно проголосовать больше. Мне пришлось копаться в двух ответах на переполнение стека, чтобы добраться сюда.
Тек

@Lynda: Не могли бы вы опубликовать свою версию IE11? мой
Мохамед Хуссейн,

1
@MohamedHussain - Моя версия - 11.0.9600.17690IC.
L84,

3
Вы ДОЛЖНЫ быть саркастичными.
паддотк

О том, что IE - «самый удивительный браузер»?
паддотк

20

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


4
Да, IE 11 - лучший опыт, со всей действительно работающей анимацией :). Да, у MS есть история «возиться» с вещами, когда пользователи начинают к ним привыкать. Посмотрите, что они сделали с Windows XP ... «Исправляем то, что не сломано», - скажут некоторые. В любом случае это отстой
Рольф

9
Браузеры Internet Explorer настолько плохи. Нет согласованности между версиями. Кто, черт возьми, это придумал? даже моя бабушка могла бы работать лучше!
Adrien Be

4
РЕДАКТИРОВАТЬ: они исправляют это (или пытаются) с 22 января 2014 года connect.microsoft.com/IE/feedback/details/806767/…
Адриен Бе

@AdrienBe Что ж, это определенно шаг в правильном направлении.
DylRicho

1
@Anthony Мой ответ неверен? Как так? В основном это говорит то, что вы только что сказали.
DylRicho

17

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

Отлично, спасибо. Когда Microsoft собирается убить этот беспорядок?
Kohjah Breese

Танк для этого, IE 11 не соблюдает старый условный метод. <! - [if IE]>
Джино

8

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

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

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

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


8

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

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

2
Я тестировал режимы документов и, похоже, не меняет пользовательский агент ?!
mgutt

@mgutt Ты прав. В эмуляции есть два варианта - режим документа и пользовательский агент. Режим документа изменяет то, как работает браузер и как он отображает страницу, а пользовательский агент меняет, какой браузер сообщает сайту о версии браузера. (в моем примере это переменная $ _SERVER ['HTTP_USER_AGENT'], которая содержит эту информацию) Итак, в основном вам нужно изменить обе эти опции, например, на IE8.
Андрей Константинов

@ Эндрю Спасибо. Теперь нашел настройку. Проблема была в немецком переводе. Они перевели «пользовательский агент» на «Zeichenfolge des Benutzer-Agents», и я подумал, что это означает кодировку. Некоторые вещи не следует переводить;)
mgutt 02

2
Это лучшее решение. Я преобразовал его в ASP.NET MVC Razor, и он отлично работает: @ {if (Request.UserAgent.Contains ("MSIE 8.0")) {/ * здесь ваш метатег * /}}
Валерио Джентиле,

Этот сайт представляет собой удобную справочную информацию о том, как выглядят все перестановки строк пользовательских агентов: useragentstring.com/pages/Internet%20Explorer
Дрю

4

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


Условные комментарии не полагаются на скрипт или сторонний код.
Walf

@Walf - правда, но они также не поддерживаются в IE. См. Здесь: msdn.microsoft.com/en-us/library/ie/hh801214(v=vs.85).aspx
Эль-Кабонг

3

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

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

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


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

Да. Но это для тех, кто тестирует старые версии IE с помощью инструментов разработчика IE11. Таким образом, используя IE11, но работающий как IE8, условные комментарии работать не будут. Для тех, кто действительно использует IE8, условные комментарии будут работать. Наверное ^ _ ^
Just Plain High

1

Некоторые условные комментарии работают, такие как ' 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, а строка агента пользователя - это сам браузер.

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 предлагают МНОГО замечательных функций, что делает это не так уж и много.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.