IE10 візуалізується в режимі IE7. Як застосувати режим «Стандарт»?


Відповіді:


244

Internet Explorer робить припущення, що більшість веб-сторінок були написані для націлювання на більш ранні версії IE, і розглядає вчення, метатеги та HTML, щоб визначити найкращий режим сумісності (іноді неправильно). Навіть з доктрипом HTML5 IE все одно переведе ваш веб-сайт у режим сумісності, якщо це веб-сайт інтрамережі.

Щоб ваш веб-сайт завжди використовував останній стандартний режим, ви можете переконатися, що Display intranet sites in Compatiblyвін вимкнено Однак це потрібно робити на кожній машині, локальній для веб-сервера (інструкції наведено нижче).

Крім того, і ще краще, ви можете використовувати X-UA-Compatibleзаголовок, щоб вимкнути це з сервера. Важливо зазначити, що використання метатега не вийде!

<!-- Doesn't always work! -->
<meta http-equiv="X-UA-Compatible" content="IE=edge" />

Протягом усього MSDN зазначається, що використання заголовка хоста або метатега повинно змінювати навіть інтранет-сайти. У статті Розуміння режимів сумісності в Internet Explorer 8 йдеться про наступне.

Велика кількість внутрішніх веб-сайтів для бізнесу оптимізовано під Internet Explorer 7, тому цей виняток за замовчуванням зберігає таку сумісність. ... Знову ж, якщо мета-тег або заголовка http використовується для встановлення документа сумісності, він замінить ці налаштування.

Однак на практиці це не вийде, використання головного заголовка - єдиний варіант, який працює. У розділі коментарів статті також показані численні приклади цього точного питання.

Використання метатега також має ряд інших проблем, таких як ігнорування тегу, якщо він не знаходиться безпосередньо під <head>тегом або якщо перед ним занадто багато даних (4k). Це також може призвести до повторного перегляду документа в деяких версіях IE, що сповільнить візуалізацію. Детальніше про ці проблеми ви можете прочитати у статті MSDN Best Practice: Наведіть свою голову в порядок .

Додавання X-UA-сумісного заголовка

Якщо ви використовуєте .NET і IIS, ви можете додати це до web.config, ви також можете це зробити програмно:

<system.webServer>
  <httpProtocol>
    <customHeaders>
      <add name="X-UA-Compatible" value="IE=edge" />
    </customHeaders>
  </httpProtocol>
</system.webServer>

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

header('X-UA-Compatible: IE=edge');

Поки X-UA-Compatibleзаголовок присутній з doctype HTML5, сайт завжди працюватиме в останньому режимі стандартів.

Вимкнення перегляду сумісності
Можливо, все ще буде корисно вимкнути Погляд сумісності. Для цього зніміть прапорець Display all intranet sites in compatibility viewу налаштуваннях перегляду сумісності.

Параметри подання сумісності

Це можна зробити, натиснувши, Altщоб отримати меню.

введіть тут опис зображення

Редагувати Ця відповідь також стосується IE9.


Вибачте моє невігластво, але як потрапити на цей аркуш налаштувань? Я перевірив налаштування Internet Explorer, клацнув правою кнопкою миші перегляд сумісності в адресному рядку - нічого.
звільнений

2
@Nick використовуйте, altщоб відкрити панель інструментів, це під інструментами -> параметри подання співзвучності
Daniel Little

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

25
+1000;). Тож слід змусити кожну ОП бачити цю відповідь, коли вони мають будь-який тег [IE] та слово "сумісне" у своєму питанні, ще до того, як вони насправді поставлять це питання.
Теему

2
Я спробував додати розділ користувацьких заголовків до проекту web.config. Здається, що налаштування не скасовує налаштування IE для використання представлення сумісності для сайтів інтранет.
DomenicDatti

25

Це працює для мене ..

<meta http-equiv="X-UA-Compatible" content="IE=edge" />

11
Як зазначає Лавінскі вище, "метатег не робить нічого для інтранетних сайтів".
Натан

2
Для чого варто, що для розміщеного веб-сайту (не-інтранет-сайт), на якому є X-UA-Compatibleметатег, але він все ще не запускає режим документа IEN10 Standard як сторінка за замовчуванням, я виявив, що якщо метатег розташований нижче тегів сценарію або просто Занадто далеко від вершини <head>дерева DOM IE10 плаче і встановлює режим документа на стандарти IE8. Отже, тримайте IE=edgeмета-тег закритим <title>тегом. Не завжди просте виправлення сайтів Wordpress, коли це не важко закодовано у файлі шаблону заголовка. Не впевнений, чи цікавить IE11, де знаходиться метатег, але сподіваюся, що це комусь стане корисним.
purefusion

1
Для сліпої копії та пастерів, таких як я, не вистачає завершального тегу. . <meta http-equiv = "X-UA-Compatible" content = "IE = edge"> </meta>
Джон Ньюмен

Закрити метатег потрібно лише в тому випадку, якщо ви використовуєте
доктрип

2
Також цей тег повинен бути першим тегом всередині <head>
Кріс Гунавардена

10

Спробуйте додати наступний тег до голови

<meta http-equiv="X-UA-Compatible" content="IE=11,IE=10,IE=9,IE=8" />

5
Це має бути IE=Edgeзамість цього
Даніель Літтл

1
Але є ризик, що майбутні версії IE
зроблять

7
Ні, це не є ризиком, якщо ви дотримуєтеся специфікації, ви не бачите людей, які роблять це для хромування.
Даніель Літтл

1
Цей тег повинен бути першим тегом всередині <head>
Кріс Гунавардена

1
Редагування цієї відповіді демонструє, чому це не дуже гарна ідея. Прийнята відповідь - найкраще рішення.
Девід Гранадо

2

Метатег нічого не робить для сайтів інтранет, і моєю проблемою було надання IE10 в режимі сумісності IE10. Що вирішило проблему, я отримав відповідь @ Jeow далі та використав це значення у заголовку http, додавши наступне до web.configрозділу IIS:

<system.webServer>
  <httpProtocol> 
    <customHeaders> 
      <clear />
      <!-- <add name="X-UA-Compatible" value="IE=edge" /> not good enough -->
      <add name="X-UA-Compatible" value="IE=11,IE=10,IE=9,IE=8" /> 
    </customHeaders> 
  </httpProtocol>
</system.webServer>

Для цілей IE сайти інтрамережі включають веб-сайти, націлені на загальнодоступні, які не перенаправлені на зовнішнє середовище - наприклад, працівник Stackoverflow, який працює в офісі, мабуть, побачить stackoverflow.com в режимі сумісності.


1

Це прекрасно працювало для мене, коли я робив наступне:

На http://msdn.microsoft.com/en-us/library/gg699338(v=vs.85).aspx

Використовували точний приклад, який вони надають у першому полі (додали відсутні </html> внизу), відкрили його в IE10 і стандарти були вимушені, я думаю, вам може знадобитися фактичний вміст у html для нього, щоб примусити стандарти не впевнені, хоча.

Я б запропонував замінити порожній код фактичним вмістом (чимось простим) і подивитися, що він робить.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.