Вопрос по browser, internet-explorer, internet-explorer-11, conditional-comments, ie11-developer-tools – Почему Internet Explorer 11 не учитывает условные комментарии даже при эмуляции режима документов Internet Explorer 8?

111

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

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

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

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

Действительно, это делает функцию непригодной для использования. Thasmo
Задавая себе тот же вопрос! Я знаю, что они опустили условные комментарии в IE10, но ИМХО эмулятордолжен учитывайте их при тестировании старых браузеров. Alexander Rechsteiner
Я думаю, что использование режима совместимости для тестирования имеет больше смысла, чем загрузка примерно 1/2 гигабайта или около того изображения для каждого браузера. Таким образом, есть ошибки (и это, вероятно, один из них), но в 99.% случаев это просто работает. Rolf
На самом деле вопрос в том, почему вы используете режим совместимости? Мой совет, чтобы избежать режима Compat как чума. Это, конечно, не подходит для тестирования, независимо от проблемы, которую вы описали, поскольку есть известные ошибки и причуды, которые берут свое начало от того, когда они впервые представили режим Compat. Если вы тестируете обратную совместимость, вам действительно нужно использовать реальную копию IE8 (и IE9 и т. Д.). Перейти кmodern.ie и загрузите виртуальные машины, которые они предоставляют для тестирования. Spudley
На трекере ошибок IE открыта ошибка. Я призываю всех посетить и сказать Microsoft, что вы можете воспроизвести это.connect.microsoft.com/IE/feedback/details/806767/... Evgeny

Ваш Ответ

8   ответов
7

что некоторые условные комментарии работают:

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

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

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

3

л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 El Kabong
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 не соблюдает старый условный метод. <! - [если IE]> Gino
Вы только что спасли меня от разбивания экрана моего компьютера ... спасибо !!! :) Adam
28

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

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

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

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

@MohamedHussain - моя версия 11.0.9600.17690IC. L84
@Lynda: Не могли бы вы опубликовать свою версию IE11? мой 11.0.9600.17631 Mohamed Hussain
Вы ДОЛЖНЫ быть безрассудными. poepje
За это нужно больше голосовать. Мне пришлось копаться в двух ответах переполнения стека, чтобы попасть сюда. Tek
Спасибо за информацию! Thasmo
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, который вносит изменения.

@AdrienBe Ну, это, безусловно, шаг в правильном направлении. DylRicho
Браузеры Internet Explorer такие плохие. Нет согласованности между версиями. Кто, черт возьми, разработал это? даже моя бабушка могла бы сделать лучше! Adrien Be
Да, IE 11 - лучший опыт со всеми анимациями, которые действительно работают :). Да, у MS есть история «возиться» с вещами, когда пользователи начинают к ним привыкать. Посмотрите, что они сделали с Windows XP ... «Исправление того, что не сломано», некоторые люди скажут. Во всяком случае, это отстой Rolf
@ Энтони Мой ответ неверный? Как так? Это в основном говорит то, что вы только что сказали. DylRicho
РЕДАКТИРОВАТЬ: они исправляют это (или пытаются) с 22 января 2014connect.microsoft.com/IE/feedback/details/806767/... Adrien Be
2

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

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

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

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

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

P.S: Я предполагаю, что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 предлагают МНОГО потрясающих функций, что делает это не такой уж большой проблемой.

7

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" />');
}
Я проверил режимы документа, и, кажется, не изменить пользовательский агент ?! mgutt
Это решение является лучшим. Я преобразовал его в ASP.NET MVC Razor, и он отлично работает: @ {if (Request.UserAgent.Contains ("MSIE 8.0")) {/ * ваш метатег здесь * /}} Valerio Gentile
+1, лучший ответ на этой странице. Работает лакомство для тестирования. McNab
@mgutt Ты прав. В эмуляции есть два параметра - режим документа и пользовательский агент. Режим документа изменяет работу браузера и отображение страницы, а пользовательский агент меняет браузер, который сообщает сайту о версии браузера. (в моем примере это переменная $ _SERVER ['HTTP_USER_AGENT'], которая содержит эту информацию) Так что в основном вам нужно изменить обе эти опции, например, на IE8. Andrei Konstantinov
@ Андрей Спасибо. Теперь я нашел настройку. Проблема была в немецком переводе. Они перевели «пользовательский агент» с «Zeichenfolge des Benutzer-Agents», и я подумал, что это означает кодировку. Некоторые вещи не должны быть переведены;) mgutt

Похожие вопросы