Чому Internet Explorer 11 не вшановує умовні коментарі навіть під час емуляції документа Internet Explorer 8?


110

Я використовую нове інструменти для розробників Internet Explorer 11 для переключення режиму документа на "8", але умовні коментарі все ще ігноруються, тобто вони неправильно розбираються і ведуть себе як звичайні коментарі. Отже, жоден посилається файл всередині умовного коментаря браузер не запитує / не завантажує.

Чому це відбувається? Це помилка?

Якщо ви вважаєте, що це справді помилка, яку потрібно виправити, будь ласка, зайдіть і скажіть, що ви теж можете відтворити це у звіті про помилку Microsoft, який повідомляється про цю проблему:
Умовні коментарі не працюють, коли емуляція режимів документа через F12 Developer Інструменти .

Оновлення: повідомлення про цю проблему було вирішено у згаданому звіті про помилку.


18
Задаю собі те саме питання! Я знаю, що вони кинули умовні коментарі в IE10, але емулятор IMHO повинен врахувати їх під час тестування на старих браузерах.
Олександр Рехштайнер

12
Дійсно, це робить цю функцію непридатною.
thasmo

3
Справжнє питання - чому ви використовуєте режим сумісності? Моя порада - уникати режиму компат, як чума. Це, звичайно, не підходить для тестування, незалежно від проблеми, яку ви описали, оскільки є відомі помилки та хитрощі, які відносяться до того часу, коли вони вперше ввели режим compat. Якщо ви тестуєте на зворотність сумісності, вам дійсно потрібно використовувати справжню копію IE8 (і IE9 тощо). Перейдіть на веб-сайт modern.ie та завантажте віз, які вони надають для тестування.
Спудлі

19
На трекері помилок IE відкрита помилка. Я закликаю всіх відвідати і сказати Microsoft, що ви можете це відтворити. connect.microsoft.com/IE/feedback/details/806767/…
Євген

15
Я думаю, що використання режиму сумісності для тестування має більше сенсу, ніж завантаження зображення на 1/2 гігабайт або близько того для кожного браузера. Отже, є помилки (і це, мабуть, один із них), але в 99.% часу це просто працює.
Рольф

Відповіді:


29

Відповідно доJacob Rossi [MSFT]

Це має бути зафіксовано в оновлення 1 для IE11, випущеному минулого тижня .

Це було розміщено 22 квітня 2014 року.

Провівши кілька тестів, виявляється, що це було виправлено, і все знову працює безперебійно для тестування найдивовижнішого браузера, який коли-небудь випускався ... Internet Explorer!


4
На це потрібно більше звертати увагу. Мені довелося перекопати два відповіді на переповнення стека, просто щоб потрапити сюди.
Тек

@Lynda: Чи можете ви опублікувати свою версію IE11? міна11.0.9600.17631
Мохамед

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

3
Ви ОБОВ'ЯЗКИ бути сарастичними.
paddotk

Про те, що IE є "найдивовижнішим браузером"?
paddotk

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
EDIT: вони виправляють це (або намагаються) з 22 січня 2014 року connect.microsoft.com/IE/feedback/details/806767/…
Adrien Be

@AdrienBe Ну, це, безумовно, крок у правильному напрямку.
Ділрічо

1
@Anthony Моя відповідь неправильна? Як так? Це в основному те, що ви сказали.
Ділрічо

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 */
}

Відмінно, дякую. Коли корпорація Майкрософт збирається вбити цю сумочку?
Kohjah Breese

Танк за це, IE 11 не шанують старого умовного методу. <! - [якщо IE]>
Джино

8

Нещодавно я зіткнувся з тією ж проблемою. Я також виявив, що деякі умовні коментарі працюють:

  • gtі ltдобре працював
  • gteі lteніколи не працював

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

Іншою альтернативою, яка мені здалася кориснішою, було використання такої послуги, як стек браузера .


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 Ти маєш рацію. У Емуляції є два варіанти - Режим документа та Агент користувача. Режим документа змінює, як працює браузер і як він відображає сторінку, а User Agent змінює, який веб-переглядач повідомляє сайту про версію браузера. (у моєму прикладі це змінна $ _SERVER ['HTTP_USER_AGENT'], що містить цю інформацію). В основному вам потрібно змінити обидва ці параметри, наприклад, на IE8.
Андрій Костянтинов

@ Ендрю Дякую Тепер я знайшов налаштування. Проблемою був переклад з німецької мови. Вони перекладали "користувальницький агент" з "Zeichenfolge des Benutzer-Agents", і я думав, що це означає "шафу". Деякі речі не слід перекладати;)
mgutt

2
Це рішення найкраще. Я перетворив його на ASP.NET MVC Razor, і він прекрасно працює: @ {if (Request.UserAgent.Contains ("MSIE 8.0")) {/ * ваш метатег тут * /}}
Valerio Gentile

Цей сайт є корисним посиланням на те, як виглядають усі перестановки рядків агентів користувача: useragentstring.com/pages/Internet%20Explorer
Дрю

4

У мене було те саме питання - це мене ганяло цілий ранок. Я додав Модернізр і вибрав усі параметри, включаючи 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

3

Я не бачив його тут, але в цьому звіті про помилку зазначається, що якщо змінити параметри подання сумісності, умовні коментарі працюватимуть, як очікувалося. Так:

  1. У IE11 натисніть "Інструменти"
  2. Параметри подання сумісності
  3. Введіть URL-адресу та натисніть Додати

Здається, зараз добре працює на моєму локальному хості. Я цього не перевіряв широко, але, можливо, це комусь допоможе.


Але відвідувачам вашого веб-сайту доведеться зробити те саме, щоб отримати той самий результат. Зробити це марним.
paddotk

Так. Але це стосується, якщо ви протестуєте старіші версії 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" другий.

Роблячи це, ви можете бути впевнені (я маю тестуватись з VM, щоб записати слово "впевнений" без лапок), що ви переглядаєте свою веб-сторінку в браузері 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.