Яка різниця, якщо одна веб-сторінка починається з
<!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.
Оновлення за жовтень 2015 року
X-UA-Compatible
на вашому сайті?", враховуючи зміни, які Microsoft внесла до своїх браузерів (докладніше про них нижче).
Залежно від того, які браузери Microsoft ви підтримуєте, вам може не знадобитися продовжувати використовувати тег X-UA-Compatible
. Якщо вам потрібно підтримувати IE9 або IE8, то я б рекомендував використовувати цей тег. Якщо ви підтримуєте тільки останні версії браузерів (IE11 і/або Edge), то я б рекомендував взагалі відмовитися від цього тега. Якщо ви використовуєте Twitter Bootstrap і вам потрібно усунути попередження про перевірку, цей тег повинен відображатися в зазначеному порядку. Додаткова інформація нижче:Метатег X-UA-Compatible
дозволяє авторам сайтів вибирати, в якій версії Internet Explorer повинна відображатися сторінка. IE11 вніс зміни в ці режими; див. примітку про IE11 нижче. [Microsoft Edge][1], браузер, який замінив IE11, враховує метатег X-UA-Compatible
лише за певних обставин. Див. примітку про Microsoft Edge нижче.
За даними Microsoft, при використанні тега X-UA-Compatible
він повинен бути якомога вище в head
вашого документа:
Якщо ви використовуєте X-UA-Compatible META-тег, ви хочете розмістити його якомога ближче до верхньої частини HEAD сторінки, наскільки це можливо. Internet Explorer починає інтерпретувати розмітку, використовуючи останню версію. Коли Internet Explorer зустрічає X-UA-Compatible META-тег, він починає заново, використовуючи движок зазначеної версії. Це негативно впливає на продуктивність, оскільки браузер повинен зупинитися і перезапустити аналіз вмісту. Ось ваші варіанти:
- IE=edge;
- "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 (Working Draft), W3C Cascading Style Sheets Level 3 Specification (Working Draft), Scalable Vector Graphics (SVG) 1.0 Specification та інші. [Примітка редактора: IE 9 не підтримує анімацію CSS3]. Режим IE8 підтримує багато встановлених стандартів, включаючи специфікацію W3C Cascading Style Sheets Level 2.1 Specification і W3C Selectors API; він також забезпечує обмежену підтримку специфікації W3C Cascading Style Sheets Level 3 Specification (Working Draft) та інших стандартів, що розвиваються.
- Режим IE7 відображає вміст так, як якщо б воно відображалося в стандартному режимі Internet Explorer 7, незалежно від того, чи містить сторінка директиву <!DOCTYPE> чи ні. Режим Emulate IE9 вказує Internet Explorer використовувати директиву <!DOCTYPE> для визначення способу відображення вмісту. Директиви стандартного режиму відображаються в режимі IE9, а директиви режиму примх відображаються в режимі IE5. На відміну від режиму IE9, режим Emulate IE9 дотримується директиву <!DOCTYPE>.
- Режим Emulate IE8 вказує Internet Explorer використовувати директиву <!DOCTYPE> для визначення способу відображення вмісту. Директиви стандартного режиму відображаються в режимі IE8, а директиви режиму примх відображаються в режимі IE5. На відміну від режиму IE8, режим Emulate IE8 дотримується директиву <!DOCTYPE>.
Режим Emulate IE7 вказує Internet Explorer використовувати директиву <!DOCTYPE> для визначення способу відображення вмісту. Директиви режиму стандартів відображаються в режимі стандартів Internet Explorer 7, а директиви режиму примх відображаються в режимі IE5. На відміну від режиму IE7, режим Emulate IE7 дотримується директиву <!DOCTYPE>. Для багатьох веб-сайтів це кращий режим сумісності. Режим IE5 відображає вміст так, як якщо б він відображався в режимі примх Internet Explorer 7, що дуже схоже на те, як вміст відображався в Microsoft Internet Explorer 5. IE10 ПРИМІТКА: Починаючи з IE10, режим примх поводиться інакше, ніж у попередніх версіях браузера. В IE9 і більш ранніх версіях режим примх обмежував веб-сторінку функціями, підтримуваними в IE5.5. В IE10 режим quirks відповідає відмінностям, зазначеним у специфікації HTML5. Особисто я завжди вибираю мета-тег
http-equiv="X-UA-Compatible" content="IE=edge"
, так як в старих версіях багато багів, і я не хочу, щоб IE вирішив перейти в режим "Сумісності" і показати мій сайт як IE7 проти IE8 або 9. Я завжди віддаю перевагу останню версію IE. IE11 Від Microsoft: Починаючи з IE11, переважним режимом роботи з документами є крайовий режим; він являє собою найвищу підтримку сучасних стандартів, доступну браузеру. Використовуйте оголошення типу документа HTML5, щоб включити крайовий режим:<!doctype html>
Граничний режим був представлений в Internet Explorer 8 і був доступний в кожному наступному випуску. Зверніть увагу, що функції, підтримувані граничним режимом, обмежені тими, які підтримуються конкретною версією браузера, що відображає контент. Починаючи з IE11, режими документів застаріли і більше не повинні використовуватися, крім як на тимчасовій основі. Переконайтеся, що ви оновили сайти, які покладаються на застарілі функції і режими документів, щоб вони відповідали сучасним стандартам. Якщо вам потрібно націлити певний режим документа, щоб ваш сайт функціонував, поки ви допрацьовуєте його для підтримки сучасних стандартів і функцій, пам'ятайте, що ви використовуєте перехідну функцію, яка може бути недоступна в майбутніх версіях. Якщо ви в даний час використовуєте x-ua-сумісний заголовок, орієнтований на застарілий режим роботи з документами, можливо, ваш сайт не буде відображати найкращий досвід, доступний в IE11. Microsoft Edge (заміна Internet Explorer, що постачається в комплекті з Windows 10) Інформація про метатегX-UA-Compatible
для версії IE Edge. Від Microsoft: Представляємо "живий" режим роботи з документами Edge Як ми оголосили в серпні 2013 року, починаючи з IE11, ми відмовляємося від режимів документів. З нашими останніми оновленнями платформи потреба в застарілих режимах документів в основному обмежується застарілими веб-додатками Enterprise. З новими архітектурними змінами ці застарілі режими документів будуть ізольовані від змін в "живому" режимі Edge, що допоможе гарантувати набагато більш високий рівень сумісності для клієнтів, які залежать від цих режимів, і допоможе нам ще швидше рухатися в напрямку поліпшення Edge. IE як і раніше буде підтримувати режими документів, які обслуговуються сайтами інтрамережі, сайтами зі списку Compatibility View, а також при використанні тільки з режимом Enterprise Mode. Загальнодоступні інтернет-сайти будуть відображатися з новою платформою режиму Edge (ігноруючи X-UA-Compatible). Наша мета полягає в тому, щоб відтепер Edge був "живим" режимом роботи з документами, і жодні інші режими роботи з документами не будуть запроваджуватися в майбутньому. У зв'язку зі змінами в Microsoft Edge, які більше не підтримують режими документів у більшості випадків, корпорація Майкрософт має інструмент для сканування вашого сайту, щоб перевірити, чи немає на ньому коду, несумісного з Edge. Інформація для IE Chrome=1 Існує такожchrome=1
, який ви можете використовувати або використовувати разом з одним із наведених вище параметрів, наприклад:<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
. Значенняchrome=1
вказує на фрейм Google Chrome, який визначається як: 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 Validator тільки при використанні<meta http-equiv="X-UA-Compatible" content="IE=Edge">
. При інших значеннях буде видавати помилку: "Мета-елемент з атрибутом http-equiv, значенням якого є X-UA-Compatible, повинен мати атрибут content зі значенням IE=edge." Іншими словами, якщо у васIE=edge,chrome=1
, то не пройде валідація. Я повністю ігнорую цю помилку, оскільки сучасні браузери просто ігнорують цей рядок коду. Якщо вам необхідно мати повністю валідний код, розгляньте можливість зробити це на рівні сервера, встановивши HTTP-заголовок. Зауважимо, що Microsoft зазначає: "Якщо надсилаються обидві ці інструкції (мета- та HTTP), перевага розробника (мета-елемент) має пріоритет над налаштуваннями веб-сервера (HTTP-заголовок)". Докладніше про те, як встановити HTTP-заголовок, див. у olibre's answer або bitinn's answer. XHTML При використанні<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
не виникає проблем з валідацією, якщо тег правильно закритий (тобто/>
проти>
). Twitter Bootstrap Цей тег настійно рекомендується командою Bootstrap принаймні з 2014 року, і Bootlint, лінтер, автором якого є команда twbs, продовжує видавати попередження, коли тег пропущено. Лінтер розрізняє попередження та помилки, і тому серйозність пропуску цього тегу можна вважати незначною.Для отримання додаткової інформації про
X-UA-Compatible
див. Microsoft Website Defining Document Compatibility. Для отримання додаткової інформації про те, що підтримує IE, див. caniuse.com. Для отримання додаткової інформації про вимоги до Twitter Bootstrap див. вікі-сторінку проекту bootlint.
Використовувати content=
"IE=edge,chrome=1"
Пропустити інші режими X-UA-Compatible
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
--------------------------
javascript::JSON.parse()
в IE8 <!DOCTYPE html>
)У вашому HTML
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
IE=edge
означає, що IE повинен використовувати останню (edge) версію свого рушія рендерингуchrome=1
означає, що IE повинен використовувати Chrome rendering engine, якщо він встановлений
Або краще в конфігурації вашого веб-сервера: add_header X-UA-Compatible "IE=Edge,chrome=1";
}
Але позиція Microsoft не була однозначною. Інша [сторінка MSDN не рекомендувала Edge mode][noEdge]:
Тому що режим Edge змушує відкривати всі сторінки в стандартному режимі, незалежно від версії Internet Explorer, у вас може виникнути спокуса використовувати його для всіх сторінок, що переглядаються в Internet Explorer. Не робіть цього, оскільки заголовок
X-UA-Compatible
підтримується тільки починаючи з Windows Internet Explorer версії 8. Замість цього Microsoft рекомендувала використовувати<!DOCTYPE html>
: Якщо ви хочете, щоб всі підтримувані версії Internet Explorer відкривали ваші сторінки в стандартному режимі, використовуйте оголошення типу документа HTML5 [...]. Як пояснює Ricardo (в коментарях нижче), будь-який DOCTYPE (HTML4, XHTML1 ...) може бути використаний для запуску стандартного режиму, а не тільки DOCTYPE HTML5. Головне, щоб на сторінці завжди був присутній DOCTYPE. Clara Onager навіть помітила в старій версії Specifying legacy document modes: Режим Edge призначений лише для тестування; не використовуйте його у виробничому середовищі. Це настільки заплутано, що Usman Y подумав, що Clara Onager говорила про це: Приклад [...] наведено лише в ілюстративних цілях; не використовуйте його у виробничих умовах.не використовуйте його у виробничих умовах;
<meta http-equiv="X-UA-Compatible" content="IE=7,9,10" > **Ну що ж... У решті відповіді я дам більше пояснень, чому використання `content="IE=edge,chrome=1"` є гарною практикою у виробництві.** --------------------------------- Історія ------- Протягом багатьох років (з 2000 по 2008) [частка ринку IE становила більше 80%] [IEMS]. А IE **v6** вважався стандартом *де-факто* (частка ринку від 80% до 97% в [2003][OneStat], [2004, 2005 і 2006][IE6] тільки для IE6, більша частка ринку з усіма версіями IE). Оскільки IE6 не дотримувався [веб-стандартів](http://en.wikipedia.org/wiki/Web_standards), розробники **були змушені** тестувати свої веб-сайти, використовуючи IE6. Ця ситуація була дуже вигідною для Microsoft (MS), оскільки веб-розробники повинні були **купувати** продукти MS (наприклад, IE не може бути використаний без придбання Windows), і було більш прибутковим залишатися невідповідним (тобто Microsoft хотіла стати **стандартом**, виключаючи інші компанії). Тому багато сайтів були сумісні лише з IE6, а оскільки IE не відповідав веб-стандарту, всі ці сайти погано відображалися в браузерах, сумісних зі стандартами. Навіть гірше, [багато сайтів вимагали лише IE](http://hintsforums.macworld.com/showthread.php?t=111479). Однак, в цей час Mozilla почала розробку Firefox з дотриманням усіх веб-стандартів (інші браузери були впроваджені для відображення сторінок так, як це робив IE6). Оскільки все більше і більше веб-розробників хотіли використовувати нові можливості веб-стандартів, все більше і більше веб-сайтів підтримувалися Firefox, ніж IE. Коли частка IE на ринку почала зменшуватися, MS зрозуміла, що залишатися несумісною зі стандартами - не найкраща ідея. Тому MS почала випускати нові версії IE (IE8/IE9/IE10), які все більше і більше відповідають веб-стандартам. --------------------------------- Проблема веб-несумісності --------------------------- Але проблема полягає в тому, що всі веб-сайти, розроблені для IE6: Microsoft не могла випустити нові версії IE, несумісні з цими старими веб-сайтами, розробленими для IE6. Замість того, щоб виводити версію IE, під яку був розроблений веб-сайт, MS попросила розробників додати додаткові дані (`X-UA-Compatible`) на своїх сторінках. У 2016 році все ще використовується IE6 ------------------------- На сьогоднішній день IE6 все ще використовується [(0,7% у 2016 році)][IE62014] (4,5% у січні 2014 року), і деякі інтернет-сайти все ще сумісні лише з IE6. Деякі веб-сайти/додатки інтрамережі тестуються з використанням IE6. Деякі інтранет-сайти на 100% функціонують лише в IE6. Ці компанії/відділи вважають за краще відкласти витрати на міграцію: інші пріоритети, ніхто більше не знає, як був реалізований веб-сайт/додаток, власник застарілого веб-сайту/додатку збанкрутував... На Китай припадає [50% використання IE6 у 2013 році] (www.ie6countdown.com/), але це може змінитися в наступні роки, оскільки [китайський дистрибутив Linux транслюється](http://www.canonical.com/content/canonical-and-chinese-standards-body-announce-ubuntu-collaboration). Будьте впевнені у своїх веб-навичках --------------------------------- Якщо ви (намагаєтеся) дотримуватися веб-стандартів, ви можете просто завжди використовувати `http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"`. Щоб зберегти сумісність зі старими браузерами, просто уникайте використання найновіших веб-функцій: використовуйте підмножину, яка підтримується найстарішим браузером, який ви хочете підтримувати. Або, якщо ви хочете піти далі, ви можете прийняти такі концепції, як [Граціозна деградація], [Прогресивне вдосконалення] і [Ненав'язливий JavaScript]. (Вам також може бути цікаво прочитати [Що повинен враховувати веб-розробник?]). Не дбайте про найкраще відображення версії IE: це не ваша робота, оскільки браузери повинні відповідати веб-стандартам. Якщо ваш сайт відповідає стандартам і використовує помірно новітні функції, то **браузери повинні бути сумісними з вашим сайтом**. Більше того, оскільки існує багато кампаній, спрямованих на знищення IE6 ([IE6 no more](http://www.ie6nomore.com/), [MS campaign](http://www.webmonkey.com/2011/03/microsoft-kicks-off-campaign-to-kill-internet-explorer-6/)), в даний час ви можете не витрачати час на тестування IE! Особистий досвід роботи з IE6 ----------------------- У 2009-2012 роках я працював в компанії, яка використовувала IE6 як *офіційний єдиний дозволений браузер*. Мені потрібно було реалізувати інтранет-сайт тільки для IE6. Я вирішив поважати веб-стандарт, але використовувати підмножину, що підтримує IE6 (HTML/CSS/JS). Це було важко, але коли компанія перейшла на IE8, сайт все ще добре відображався, тому що я використовував Firefox і [firebug][FB] для перевірки сумісності з веб-стандартом ;) [Clara]: https://stackoverflow.com/users/1400368 [noEdge]: http://msdn.microsoft.com/library/jj676915.aspx#DCModes [MSICON]: http://windows.microsoft.com/en-US/internet-explorer/products/ie-9/features/compatibility-view [IEMS]: http://en.wikipedia.org/wiki/File:Internet-explorer-usage-data.svg [IE6]: http://en.wikipedia.org/wiki/Internet_Explorer#Desktop_Market_share_by_year_and_version [OneStat]: http://www.onestat.com/html/aboutus_pressbox23.html [IE62014]: http://marketshare.hitslink.com/report.aspx?qprid=3&qpaf=&qpcustom=Microsoft+Internet+Explorer+6.0&qpcustomb=0 [FB]: http://en.wikipedia.org/wiki/Firebug_%28software%29 [Граціозна деградація]: http://www.w3.org/wiki/Graceful_degredation_versus_progressive_enhancement [Прогресивне вдосконалення]: http://en.wikipedia.org/wiki/Progressive_enhancement [Ненав'язливий JavaScript]: http://en.wikipedia.org/wiki/Unobtrusive_JavaScript [Що повинен враховувати веб-розробник?]: https://softwareengineering.stackexchange.com/questions/46716
Використовуйте це, щоб змусити IE приховати цю дратівливу кнопку сумісності браузера в адресному рядку:
<meta http-equiv="X-UA-Compatible" content="IE=edge" />