Що робить <meta http-equiv = "X-UA-Compatible" content = "IE = edge">?


1436

Яка різниця, якщо починається одна веб-сторінка

<!DOCTYPE html> 
<html> 
  <head> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 

і Якщо сторінка починається з

<!DOCTYPE html> 
<html> 
  <head> 
     <!-- without X-UA-Compatible meta -->

Якщо різниці немає, я вважаю, що я можу просто проігнорувати X-UA-Compatibleмета-заголовок, оскільки просто хочу, щоб він був відображений у більшості стандартних режимів у всіх версіях IE.

Відповіді:


1703

Оновлення жовтня 2015 року

Ця відповідь була опублікована кілька років тому, і тепер питання справді має бути, чи варто вам навіть розглянути можливість використання X-UA-Compatibleтегу на вашому сайті? зі змінами, які Microsoft внесла у свої браузери (докладніше про ці нижче).

Залежно від того, які браузери Microsoft ви підтримуєте, можливо, вам не знадобиться продовжувати використовувати X-UA-Compatibleтег. Якщо вам потрібно підтримувати IE9 або IE8, я б рекомендував використовувати тег. Якщо ви підтримуєте лише найновіші веб-переглядачі (IE11 та / або Edge), я б подумав взагалі скинути цей тег. Якщо ви використовуєте Twitter Bootstrap і вам потрібно усунути попередження перевірки, цей тег повинен з’являтися у визначеному порядку. Додаткова інформація нижче:


X-UA-CompatibleМета тег дозволяє веб - авторам , щоб вибрати , яка версію Internet Explorer сторінка повинна бути надана в якості. IE11 вніс зміни в ці режими; див. примітку IE11 нижче. Microsoft Edge , браузер, який замінив IE11, лише шанує X-UA-Compatibleметатег за певних обставин. Див. Примітку Microsoft Edge нижче.

На думку Microsoft, при використанні X-UA-Compatibleтегу він повинен бути максимально високим у вашому документі head:

Якщо ви використовуєте тег META, сумісний з X-UA, ви хочете розмістити його якомога ближче до верхньої частини сторінки HEAD. Internet Explorer починає інтерпретувати розмітку, використовуючи останню версію. Якщо Internet Explorer наштовхується на тег META, сумісний з X-UA, він починає використовуватись з використанням двигуна призначеної версії. Це показник ефективності, оскільки браузер повинен зупинитися та перезапустити аналіз вмісту.

Ось ваші варіанти:

  • "IE = край"
  • "IE = 11"
  • "IE = EmulateIE11"
  • "IE = 10"
  • "IE = EmulateIE10"
  • "IE = 9"
  • "IE = EmulateIE9
  • "IE = 8"
  • "IE = EmulateIE8"
  • "IE = 7"
  • "IE = EmulateIE7"
  • "IE = 5"

Щоб спробувати зрозуміти, що означає кожен, тут наведені визначення, надані Microsoft:

Internet Explorer підтримує ряд режимів сумісності документів, які дозволяють використовувати різні функції та можуть впливати на спосіб відображення вмісту:

  • Режим Edge повідомляє Internet Explorer відображати вміст у найвищому доступному режимі. У Internet Explorer 9 це еквівалентно режиму IE9. Якщо в майбутньому випуску Internet Explorer підтримується більш високий режим сумісності, сторінки, встановлені в крайньому режимі, відображатимуться у найвищому режимі, підтримуваному цією версією. Ці самі сторінки все одно відображатимуться в режимі IE9 при перегляді Internet Explorer 9. Internet Explorer підтримує ряд режимів сумісності документів, які дозволяють використовувати різні функції та можуть впливати на спосіб відображення вмісту:

  • Режим IE11 забезпечує найвищу підтримку для встановлених та нових галузевих стандартів, включаючи HTML5, CSS3 та інші.

  • Режим IE10 забезпечує найвищу підтримку для встановлених та нових галузевих стандартів, включаючи HTML5, CSS3 та інші.

  • Режим IE9 забезпечує найвищу підтримку встановлених та нових галузевих стандартів, включаючи HTML5 (робочий проект), каскадні таблиці стилів W3C рівня 3 рівня (робочий проект), масштабовану векторну графіку (SVG) 1.0 специфікацію та інші. [Примітка редактора: IE 9 не підтримує анімацію CSS3].

  • Режим IE8 підтримує безліч встановлених стандартів, включаючи каскадні таблиці стилів W3C, рівень 2.1, специфікацію та API селекторів W3C; він також надає обмежену підтримку специфікацій каскадних таблиць стилів W3C рівня 3 (робочий проект) та інших нових стандартів.

  • Режим IE7 робить вміст так, ніби він відображався в стандартному режимі Internet Explorer 7, незалежно від того, чи містить сторінка директива.

  • Емуляція режиму IE9 повідомляє Internet Explorer використовувати директиву для визначення способу візуалізації вмісту. Директиви режиму стандартів відображаються в режимі IE9, а директиви режиму диваків відображаються в режимі IE5. На відміну від режиму IE9, режим Emulate IE9 дотримується директиви.

  • Емуляція режиму IE8 повідомляє Internet Explorer використовувати директиву для визначення способу візуалізації вмісту. Директиви режиму стандартів відображаються в режимі IE8, а директиви режиму примх відображаються в режимі IE5. На відміну від режиму IE8, режим Emulate IE8 дотримується директиви.

  • Емуляція IE7 вказує Internet Explorer використовувати директиву для визначення способу візуалізації вмісту. Директиви режиму стандартів відображаються в стандартному режимі Internet Explorer 7, а директиви режиму диваків відображаються в режимі IE5. На відміну від режиму IE7, режим Emulate IE7 дотримується директиви. Для багатьох веб-сайтів це кращий режим сумісності.

  • Режим IE5 робить вміст так, як ніби він відображався в режимі химерності Internet Explorer 7, що дуже схоже на те, як вміст відображався в Microsoft Internet Explorer 5.

Примітка IE10: Станом на IE10, режим диваків веде себе інакше, ніж у попередніх версіях браузера. У IE9 та більш ранніх версіях режим примх обмежував веб-сторінку функціями, які підтримуються IE5.5. У IE10 режим диваків відповідає розбіжностям, визначеним у специфікації HTML5.

Особисто я завжди вибираю http-equiv="X-UA-Compatible" content="IE=edge"метатег, оскільки у старих версіях є багато помилок, і я не хочу, щоб IE вирішив перейти в "режим сумісності" і показувати свій сайт як IE7 проти IE8 або 9. Я завжди віддаю перевагу останню версію IE.

IE11

Від Microsoft :

Починаючи з IE11, кращий режим є кращим документом; він представляє найвищу підтримку сучасних стандартів, доступних для браузера.

Використовуйте декларацію типу HTML5 для ввімкнення крайового режиму:

<!doctype html>

Режим Edge був введений в Internet Explorer 8 і був доступний у кожному наступному випуску. Зауважте, що функції, підтримувані крайовим режимом, обмежені функціями, підтримуваними певною версією браузера, що надає вміст.

Починаючи з IE11, режими документу застаріли і більше не повинні використовуватися, за винятком тимчасової бази. Обов’язково оновлюйте сайти, які покладаються на застарілі функції та режими документування, щоб відповідати сучасним стандартам.

Якщо вам потрібно націлити конкретний режим документа, щоб ваш сайт функціонував під час його переробки на підтримку сучасних стандартів та функцій, пам’ятайте, що ви використовуєте перехідну функцію, таку, яка може бути недоступною у майбутніх версіях.

Якщо ви зараз використовуєте сумісний із заголовком x-ua для націлювання на застарілий режим документа, можливо, ваш сайт не відображатиме найкращого досвіду, доступного для IE11.

Microsoft Edge (Заміна для Internet Explorer, що постачається в комплекті з Windows 10)

Інформація про X-UA-Compatibleметатег для версії IE "Edge". Від Microsoft :

Введення в режим «живого» Edge документа

Як ми оголосили в серпні 2013 року, ми знижуємо режими документу станом на IE11. Завдяки останнім оновленням платформи потреба у застарілих документах обмежується насамперед веб-програмами, що передаються у спадщину. З новими архітектурними змінами ці застарілі режими документообігу будуть відокремлені від змін у режимі "живого" Edge, що допоможе гарантувати набагато більш високий рівень сумісності для клієнтів, які залежать від цих режимів, та допоможе нам ще швидше рухатись покращенням Edge . IE все ще буде вшановувати режими документування, що обслуговуються веб-сайтами інтрамережі, сайтами зі списку «Перегляд сумісності» та при використанні лише для корпоративного режиму.

Загальнодоступні веб-сайти будуть надані за допомогою нової платформи Edge mode (ігнорування X-UA-Compatible). Наша мета полягає в тому, щоб Edge був "живим" режимом документа звідси і більше не вводиться подальший режим документування.

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

Chrome = 1 інформація для IE

Існує також , chrome=1що ви можете використовувати або використовувати спільно з одним з представлених вище опцій , таких як: <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">. chrome=1призначений для Chrome Frame від Google, який визначається як:

Google Chrome Frame - плагін браузера з відкритим кодом. Користувачі, у яких встановлений плагін, мають доступ до відкритих веб-технологій Google Chrome та швидкого механізму JavaScript, коли вони відкривають сторінки у веб-переглядачі.

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

Коли Google Chrome Frame встановлений, веб просто покращується, не замислюючись про це.

Але для цього плагіна для роботи необхідно використовувати chrome=1в X-UA-Compatibleмета - тезі.

Більше інформації про Chrome Frame можна знайти тут .

Примітка: Google Chrome Frame працює лише для IE6 до IE9 , і було вимкнено 25 лютого 2014 року. Більше інформації можна знайти тут . Дякуємо @mck за посилання.

Перевірка:

HTML5 :

Сторінка буде підтверджена за допомогою валідатора W3 лише під час використання <meta http-equiv="X-UA-Compatible" content="IE=Edge">. Для інших значень це призведе до помилки: A meta element with an http-equiv attribute whose value is X-UA-Compatible must have a content attribute with the value IE=edge.Іншими словами, якщо IE=edge,chrome=1вона є, вона не перевірятиме. Я повністю ігнорую цю помилку, оскільки сучасні браузери просто ігнорують цей рядок коду.

Якщо у вас повинен бути повністю дійсний код, тоді подумайте про це на рівні сервера, встановивши заголовк HTTP. Як зауваження, Microsoft говорить: If both of these instructions are sent (meta and HTTP), the developer's preference (meta element) takes precedence over the web server setting (HTTP header). Дивіться відповідь olibre або відповідь бітіна для отримання більш детальної інформації про те, як встановити HTTP-заголовок.

XHTML

Немає проблеми з валідацією при використанні <meta http-equiv="X-UA-Compatible" content="IE=Edge" />, якщо тег належним чином закритий (тобто />vs >).

Twitter Bootstrap

Цей тег настійно рекомендується командою Bootstrap щонайменше з 2014 року, і Bootlint , підводник, автором якого є команда twbs, продовжує видавати попередження, коли тег опущено. Лінійка розрізняє застереження та помилки, і тому тяжкість пропускання цього тегу може вважатися незначною.


Для отримання додаткової інформації про X-UA-Compatibleвеб- сайт Microsoft, що визначає сумісність документів .

Для отримання додаткової інформації про те, що підтримується IE, див. Caniuse.com .

Для отримання додаткової інформації про вимоги до завантаження у Twitter див. Сторінку вікі проекту bootlint .


39
Якщо я не маю "X-UA-Compatible" у заголовках, що буде?
Морган Ченг

44
В основному те, що відбувається, коли у вас є сумісний з X-UA, він повідомляє IE, як поводитись щодо встановленого вами значення (IE = край тощо), якщо його немає, IE покаже сайту, як він вважає, що найкраще він повинен бути показаний . Це може бути режим сумісності або це остання версія IE. Що найкраще вважає Microsoft / IE. Мати сенс?
L84

2
@TravisJ - Наскільки я розумію, найвищий доступний режим в основному означає, що IE 8 може підтримувати до режимів IE8, IE9 може підтримувати режими IE9 тощо. Я додав деякі визначення для кожного режиму, наданого Microsoft.
L84

10
@AdrienBe - я повністю згоден! Поки що IE 10 був найкращим для мене, але я зневажаю будь-яку іншу версію. Одного разу у мене було налаштування сторінки з деякими ефектами близько 200-300 рядків HTML і приблизно 20 хвилин кодування. Для того, щоб IE працював, мені довелося додати ще 1000 рядків коду (в основному сторонніх javascript) і 2-3 години роботи! Я дуже ненавиджу IE =>
L84,

9
Google Chrome Frame буде звільнено у січні 2014 року: blog.chromium.org/2013/06/retiring-chrome-frame.html
mck

339

Використовуйте content="IE=edge,chrome=1"   Пропуск інших X-UA-Compatibleрежимів

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
                                   -------------------------- 
  • Немає піктограми сумісності
    На панелі адрес IE9 не відображається кнопка "Перегляд сумісності",
    а на сторінці також не відображається зміна меню, зображень та текстових вікон, що не знаходяться на місці.

  • Особливості
    Цей метатег необхідний для включення javascript::JSON.parse()в IE8
    (навіть коли <!DOCTYPE html>він присутній)

  • Вірність коректності
    / Виконання сучасних HTML / CSS / JavaScript є більш вірним (приємнішим).

  • Продуктивність Trident движок рендеринга повинен працювати швидше в крайової режимі.


Використання

У вашому HTML

<!DOCTYPE html> 
<html> 
  <head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  • IE=edge означає, що IE повинен використовувати останню (крайню) версію свого механізму візуалізації
  • chrome=1означає, що IE повинен використовувати механізм візуалізації Chrome, якщо він встановлений

Або краще в налаштуваннях вашого веб-сервера:
(див. Також відповідь RiaD )

  • Apache, як пропонує пікселін

    <IfModule mod_setenvif.c>
      <IfModule mod_headers.c>
        BrowserMatch MSIE ie
        Header set X-UA-Compatible "IE=Edge,chrome=1" env=ie
      </IfModule>
    </IfModule>
    <IfModule mod_headers.c>
      Header append Vary User-Agent
    </IfModule>
    
  • Nginx за пропозицією Стефа Пауза

    server {
      #...
      add_header X-UA-Compatible "IE=Edge,chrome=1";
    }
    
  • Проксі- лак , запропонований Лукасом Ріццелем

    sub vcl_deliver {
      if( resp.http.Content-Type ~ "text/html" ) {
        set resp.http.X-UA-Compatible = "IE=edge,chrome=1";
      }
    }
    
  • IIS (починаючи з v7)

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

Microsoft рекомендує режим Edge з IE11

Як зауважила Lynda (див. Коментарі), зміни сумісності в IE11 рекомендують режим Edge :

Починаючи з IE11, кращий режим є кращим документом; він представляє найвищу підтримку сучасних стандартів, доступних для браузера.

Але позиція Microsoft не була зрозумілою. Інша сторінка MSDN не рекомендувала режим Edge :

Оскільки режим Edge змушує відкривати всі сторінки в стандартному режимі, незалежно від версії Internet Explorer, ви можете спокуситись використовувати це для всіх сторінок, які переглядаються за допомогою Internet Explorer. Не робіть цього, оскільки X-UA-Compatibleзаголовок підтримується лише починаючи з Windows Internet Explorer 8.

Натомість Microsoft рекомендує використовувати <!DOCTYPE html>:

Якщо ви хочете, щоб усі підтримувані версії Internet Explorer відкривали ваші сторінки в стандартному режимі, використовуйте декларацію про тип HTML5 [...]

Як пояснює Рікардо (у коментарях нижче), будь-який DOCTYPE (HTML4, XHTML1 ...) може бути використаний для запуску стандартного режиму, а не лише DOCTYPE HTML5. Важливим є завжди мати ДОКЕТИП на сторінці.

Клара Онагер навіть помітила у більш старій версії Вказівка ​​застарілих режимів документування :

Режим краю призначений лише для тестування; не використовуйте його у виробничих умовах.

Це так заплутано, що Усман Ю думав, що Клара Онагер говорить про:

Приклад [...] подано лише для ілюстративних цілей; не використовуйте його у виробничих умовах.

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

Ну ... У решті цієї відповіді я даю більше пояснень, чому використання content="IE=edge,chrome=1"є хорошою практикою у виробництві.


Історія

Протягом багатьох років (2000 - 2008 рр.) Частка ринку ІЕ становила понад 80% . І IE v6 вважався фактичним стандартом (80% до 97% частки ринку лише у 2003 , 2004, 2005 та 2006 роках лише для IE6; більша частка ринку у всіх версіях IE).

Оскільки IE6 не дотримувався веб-стандартів , розробникам довелося протестувати свій веб-сайт за допомогою IE6. Ця ситуація була велика для Microsoft (MS) , як веб - розробники повинні були купити MS продукцію (наприклад , IE не може бути використана без покупки Windows), і це було більш дохідні залишитися невідповідним (тобто Microsoft хоче стати стандартом виключаючи інші компанії).

Тому багато сайтів були сумісними лише з IE6, і оскільки IE не відповідав веб-стандарту, всі ці веб-сайти не були належним чином відображені на веб-переглядачах, що відповідають стандартам. Ще гірше, що для багатьох сайтів потрібен лише IE .

Однак у цей час Mozilla розпочала розробку Firefox, максимально дотримуючись усіх веб-стандартів (інші веб-переглядачі були реалізовані для візуалізації сторінок, як це робив IE6). Оскільки все більше і більше веб-розробників хотіли використовувати нові функції веб-стандартів, все більше веб-сайтів підтримували Firefox, ніж IE.

Коли обмін ринком IE зменшувався, MS зрозуміли, що залишатись несумісним стандарт не є гарною ідеєю. Тому MS почали випускати нову версію IE (IE8 / IE9 / IE10), дотримуючись все більше і більше веб-стандартів.


Не сумісна з веб-сторінками проблема

Але проблема полягає у всіх веб-сайтах, розроблених для IE6: Microsoft не змогла випустити нові версії IE, несумісні з цими старими веб-сайтами, розробленими IE6. Замість виведення версії IE був розроблений веб-сайт, MS вимагала від розробників додати додаткові дані ( X-UA-Compatible) на свої сторінки.

IE6 досі використовується у 2016 році

На сьогоднішній день IE6 все ще використовується (0,7% у 2016 році) (4,5% у січні 2014 року), а деякі веб-сайти досі підтримують IE6. Деякі веб-сайти / програми інтрамережі тестуються за допомогою IE6. Деякі веб-сайти інтрамережі на 100% функціонують лише на IE6. Ці компанії / департаменти вважають за краще відкласти вартість міграції: інші пріоритети, ніхто більше не знає, як веб-сайт / додаток реалізований, власник старого веб-сайту / програми збанкрутував ...

Китай становить 50% використання IE6 у 2013 році, але це може змінитися в наступні роки, коли розповсюджується китайський дистрибутив Linux .

Будьте впевнені у своїх веб-навичках

Якщо ви (намагаєтесь) поважати веб-стандарт, ви можете просто завжди користуватися ним http-equiv="X-UA-Compatible" content="IE=edge,chrome=1". Щоб зберегти сумісність зі старими браузерами, просто уникайте використання останніх веб-функцій: використовуйте підмножину, підтримувану найдавнішим браузером, який ви хочете підтримувати. Або якщо ви хочете піти далі, ви можете прийняти такі поняття, як граціозна деградація , прогресивне вдосконалення та ненав’язливий JavaScript . (Можливо, вам також буде приємно прочитати, що повинен врахувати веб-розробник? )

Не переймайтеся найкращим відображенням версії IE: це не ваша робота, оскільки браузери повинні відповідати веб-стандартам. Якщо ваш сайт відповідає стандартам та використовує найсучасніші функції, тому веб-переглядачі повинні відповідати вашому веб-сайту .

Більше того, оскільки існує багато кампаній, спрямованих на знищення IE6 ( IE6 не більше , кампанія MS ), сьогодні ви можете уникнути втрати часу на тестування IE!

Особистий досвід IE6

У 2009-2012 роках я працював у компанії, яка використовувала IE6 як офіційний єдиний браузер . Мені довелося впровадити веб-сайт інтранет тільки для IE6. Я вирішив поважати веб-стандарт, але використовуючи підмножину, що підтримує IE6 (HTML / CSS / JS).

Це було важко, але коли компанія перейшла на IE8, веб-сайт все-таки добре відображався, тому що я використовував Firefox та firebug для перевірки сумісності веб-стандартів;)


2
'Режим краю призначений лише для тестування; не використовуйте його у виробничих умовах ". Дивіться msdn.microsoft.com/en-us/library/jj676915(v=vs.85).aspx
Carl Onager

5
Будь ласка, @ClaraOnager знайдіть час, щоб пояснити, що не так у моїй відповіді (з вашої точки зору). Навіть якщо MS не рекомендує використовувати режим Edge у виробничих умовах, є вагомі причини використовувати його у виробничих умовах. Важливо технічно уточнити наші найкращі практики. Мені подобається ділитися своїми знаннями та досвідом. Я сподіваюся і на вас. Ми можемо покращитись разом;) Ура
олібре

2
Привіт @ Рікардо, я згоден з тобою. Microsoft каже: "Якщо ви хочете, щоб усі підтримувані версії Internet Explorer відкривали ваші сторінки в стандартному режимі, використовуйте HTML5 [...]" у розділі Розуміння застарілих режимів документування (див. Пораду ). Можливо, моє пояснення незрозуміле ... Можливо, я щось неправильно зрозумів ... Я змінив текст ... Що ви думаєте про мої зміни? для вас це добре? Що ви радите змінити / покращити в межах моєї відповіді? Дякуємо за ваш відгук. Ура ;-)
олібре

5
@ClaraOnager ... у своїй першій відповіді ви вказуєте неправильно, на довідковій сторінці. MS каже, що не використовувати у виробничому середовищі для: <meta http-equiv = "X-UA-Compatible" content = "IE = 7, 9,10 "> не інші речі Edge.
Usman Younas

3
Про режим Edge, що використовується у виробничих умовах. Від Microsoft:Starting with IE11, edge mode is the preferred document mode; it represents the highest support for modern standards available to the browser.
L84,

58

Різниця полягає в тому, що якщо ви лише вказуєте параметри перегляду сумісностіDOCTYPE IE, вони мають перевагу. За замовчуванням ці налаштування змушують усі сайти інтрамережі переглядати сумісність незалежно від . Також є прапорець, щоб використовувати Перегляд сумісності для всіх веб-сайтів, незалежно від .DOCTYPEDOCTYPE

Діалогове вікно "Параметри перегляду сумісності IE"

X-UA-Compatibleперевизначає параметри подання сумісності, тому сторінка буде відображатися в стандартному режимі незалежно від налаштувань браузера. Це змушує застосовувати стандартний режим для:

  • сторінки інтрамережі
  • зовнішні веб-сторінки, коли адміністратор комп'ютера вибрав "Відображення всіх веб-сайтів у вигляді сумісності" за замовчуванням - подумайте про великі компанії, уряди, університети
  • коли ви ненавмисно потрапляєте у список перегляду сумісності Microsoft
  • випадки, коли користувачі вручну додали ваш веб-сайт до списку в Налаштуваннях перегляду сумісності

DOCTYPEодин не може цього зробити; ви опинитесь в одному з режимів перегляду сумісності в цих випадках незалежно від DOCTYPE.

Якщо вказані metaі тег, і заголовок HTTP, metaтег має перевагу.

Ця відповідь заснована на вивченні повних правил для прийняття рішення про режим документа в IE8 , IE9 та IE10 . Зауважте, що огляд на DOCTYPE- це останній запасний момент для вирішення режиму документа.


1
У сценарії інтрамережі IE10 за замовчуванням переводиться в режим сумісності. Дивіться stackoverflow.com/questions/13284083/…. Цей тег за замовчуванням не потрібен для Інтернету, але він необхідний (за замовчуванням) при використанні myintenralserver / myapp . Я хотів додати цей коментар, оскільки різниця в Інтернеті проти інтрамережі була зрозуміла лише з тексту на скріншоті, а не з тексту відповідей на сторінці.
yzorg

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

Дякую! ця відповідь набагато чіткіше, ніж інші відповіді щодо сайтів інтранет. Інші відповіді містять технічні деталі щодо того, як і як. Я ненавиджу MS IE. Також добре писати: один абзац дає зрозуміти, для чого нам потрібен метатег. Браво
Анікет Інге

3
Я б хотіла, щоб я змогла відповісти цю відповідь сто разів. Рятувальний екран захоплює саме там. Під час введення цього кров'яного тиску ...
EvilDr

Дивовижний дивовижний! Дуже дякую за цю відповідь.
Seanosapien

25

Використовуйте це, щоб змусити IE приховати цю надокучливу кнопку сумісності браузера в адресному рядку:

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

1
'Режим краю призначений лише для тестування; не використовуйте його у виробничих умовах ". Дивіться msdn.microsoft.com/en-us/library/jj676915(v=vs.85).aspx
Carl Onager

4
Для гарної заходи я використовую <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">з chrome=1директивою так підказує IE6, 7, 8 користувачів встановити / використовувати Chrome Frame . Навіть HTML5 Boilerplate використовує його.
Рікардо Зео

10
@ClaraOnager Хоча Microsoft каже, що це не обов'язково означає, що вони праві. Я використовував <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">з того дня, як вийшов взагалі без проблем. Насправді я врятував свою команду і себе сотні головних болів, зробивши так, щоб користувач IE використовував його останній механізм для відображення створених нами сторінок. В відміну від вас , і Microsoft, я рекомендую всім використовувати наведені вище мета - тег кожен раз . Поки IE все ще існує, ми будемо "змушені" використовувати цей метатег: p
Рікардо Zea

Це змінилося з IE11. Ця версія здійснила кардинальний крок у світ браузерів згідно з офіційними стандартами. Він дійшов до крайностей, навіть не ідентифікуючи себе як Internet Explorer! Тепер він говорить, що це "Netscape" і не включаючи нічого в інформацію браузера, щоб дати справжню особу. Якщо ви все ще стикаєтеся з будь-якими хитрістю у браузері IE з цієї версії, вам потрібно змусити її встановити IE10, встановивши <meta http-equiv="X-UA-Compatible" content="IE=10">. Потім він повідомляє себе як Microsoft Internet Explorer.
трепет

облицювальний ж пов'язаний з цим питання, якщо хтось небудь може допомогти мені: stackoverflow.com/questions/22013880 / ...
DSi

25

Оскільки я не можу додати коментар до позначеної відповіді, я просто опублікую це тут.

Крім правильної відповіді, ви дійсно можете це підтвердити. Оскільки цей метатег призначений лише для IE, все, що вам потрібно зробити, це додати IE умовно.

<!--[if IE]>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
<![endif]-->

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


4
Умовні коментарі не слід використовувати EXCEPT для націлювання HTML на <= IE9. (Це було правдою навіть тоді, коли ця відповідь була написана)
EKW

18

Я думаю, що ця схема від Microsoft пояснює все. Щоб розповісти IE, як візуалізувати вміст,! DOCTYPE повинен працювати з мета-тегом, сумісним з X-UA. ! DOCTYPE сам по собі не впливає на зміну режиму IE Document.

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

http://ie.microsoft.com/testdrive/ieblog/2010/Mar/02_HowIE8DeterminesDocumentMode_3.png


3
Ось оновлена ​​версія, що включає IE9. OMG ... ie.microsoft.com/testdrive/ieblog/2010/Jun/…
Spiralis

3
І цей включає IE10 : msdn.microsoft.com/en-us/library/ff406036%28v=vs.85%29.aspx У різних розділів є свої окремі блок-схеми ...
Spiralis

Ви неправильно прочитали цю схему потоку. За відсутності X-UA-Compatible браузер шукатиме <! DOCTYPE>. Якщо він знайде його, він відображається в стандартному режимі (він же "EmulateIE8"). Якщо цього не відбувається, він повертається до "Quirks Mode".
Чак Ле Бутт

Дякуємо, що завантажили зображення в Stackoverflow. Оригінальні посилання на Microsoft усі мертві.
Елмуе

12

Для повноти вам насправді не потрібно додавати його у свій HTML (який невідомий http-equiv у HTML5)

Зробіть це і ніколи не озирайтеся назад (перший приклад для apache , другий для nginx )

Header set X-UA-Compatible "IE=Edge,chrome=1"

add_header X-UA-Compatible "IE=Edge,chrome=1";

2
@HueiTan - Я думаю, що плакат говорить про те, що, коли ви спробуєте перевірити сторінку за допомогою W3 Validator, це призведе до помилки: Bad value X-UA-Compatible for attribute http-equiv on element meta.- Це не означає, що вона не працюватиме. Це просто недійсний код.
L84

10

Всього одне речення, щоб сказати Інструкція Internet Explorer використовувати його останню систему візуалізації

<meta http-equiv="x-ua-compatible" content="ie=edge">

7
<meta http-equiv="X-UA-Compatible" content="IE=Edge">

Щоб ця лінія працювала як очікувалося, переконайтесь, що:

  1. Це перший елемент відразу після <head>
  2. Ніяких умовних коментарів не використовується перед метатегом, наприклад, щодо <html>елемента

Інакше деякі версії IE просто ігнорують його.

ОНОВЛЕННЯ

Ці два правила спрощені, але їх легко запам'ятати та перевірити. Незважаючи на документи MSDN, які заявляють, що ви можете ставити заголовки та інші метатеги перед цим, я б не рекомендував цього робити.

Як змусити це працювати з умовними коментарями.

Цікава стаття про порядок елементів у голові. (blogs.msdn.com, для IE)

ДОВІДКА

З документації MSDN :

X-UA-Compatible[...] повинні з'являтися в заголовку сторінки (розділ ГОЛОВА) перед усіма іншими елементами для елемента заголовка і інших елементів , крім мета.


5

якщо ви використовуєте свій веб-сайт у тій самій мережі, що і сервер IE любить переходити в режим сумісності, незважаючи на DOCTYPE.
Додавання meta http-equiv="X-UA-Compatible" content="IE=Edge" відключає цю небажану поведінку.


Іншим словом для "тієї ж мережі, що і сервер" є інтранет ... тому в основному IE10 розбивається за замовчуванням для всіх сайтів інтранет. Дивіться знімок екрана у відповіді @AndrewNeitsch.
yzorg

3

Це LITERALLY 1 запит google , але ось:

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

Розуміння застарілих режимів документування

Використовуйте наступне значення для відображення веб-сторінки в крайовому режимі, який є найвищим стандартом, що підтримується Internet Explorer, від Internet Explorer 6 до IE11.

<meta http-equiv="x-ua-compatible" content="IE=edge"

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

Примітка Починаючи з IE11, кращим режимом вважається бажаний режим документа. (У попередніх версіях це вважалося експериментальним.) Щоб дізнатися більше, перегляньте статтю Режими документа застарілі. Починаючи з Windows Internet Explorer 8, деякі веб-розробники використовували металевий елемент крайнього режиму, щоб приховати кнопку «Перегляд сумісності» на адресному рядку. Станом на IE11, це більше не потрібно, оскільки кнопку було видалено з адресного рядка. Оскільки це змушує відкривати всі сторінки в стандартному режимі, незалежно від версії Internet Explorer, ви можете спокуситись використовувати крайній режим для всіх сторінок, які переглядаються за допомогою Internet Explorer. Не робіть цього, оскільки заголовок X-UA-сумісний підтримується лише починаючи з Internet Explorer 8.

Порада Якщо ви хочете, щоб усі підтримувані версії Internet Explorer відкривали свої сторінки в стандартному режимі, використовуйте декларацію про тип HTML5, як показано в попередньому прикладі.

Також серед результатів пошуку є:


2

2.1.3.5 Мета-тег X-UA-сумісності та заголовок відповіді HTTP

Ця функціональність не буде реалізована в будь-якій версії Microsoft Edge.

<meta http-equiv="X-UA-Compatible" content="IE=9; IE=8; IE=7; IE=EDGE" />

Дивіться https://msdn.microsoft.com/en-us/library/ff955275(v=vs.85).aspx

Так, я знаю, що я спізнююсь на вечірку, але у мене просто були деякі питання та дискусії, і врешті-решт мій начальник змусив мене зняти X-UA-Compatibleтег з усіх документів, над якими я працював.

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

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