Навіщо більше використовувати X-UA-сумісний IE = Edge?


95

Останнім часом я пройшов кілька онлайн-курсів, і досі бачу, як деякі інструктори за замовчуванням додають такий метатег у верхню частину своїх документів:

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

Думається, що це так само важливо і корисно, як <meta charset="UTF-8">.

Але чому?

Згідно з документацією Microsoft Modern.ie, це "найкраща практика", яка "гарантує, що Internet Explorer використовує найновіший механізм". Гаразд, справедливо.

Однак якщо ви дотримуєтеся блок-схеми на MSDN, це чітко показує, що документ без інформації, сумісної з X-UA, пересилається в налаштування користувача "Перегляд сумісності", і якщо цього не встановлено, просто виконуйте декларацію! DOCTYPE .

Іншими словами, якщо у користувача не встановлено певних налаштувань подання сумісності, IE буде просто стежити за вашим! DOCTYPE і використовувати рендерінг у найсвіжішому стандартному режимі вашого браузера в будь-якому випадку ... В X-UA-Compatible IE=Edgeзаяві зовсім не потрібно.

Як каже MSDN: " Використовуйте декларацію типу документа HTML5, щоб увімкнути режим краю ".

То за яких обставин це X-UA-Compatible IE=Edgeпотрібно?

Відповіді:


153

Як зазначає відповідь @ David, якщо ви не розміщуєте веб-сайт у зоні "Local Intranet", то дуже мало підстав для включення <meta http-equiv="X-UA-Compatible" content="IE=edge">на ваші веб-сторінки, і (відповідно до рекомендацій корпорації Майкрософт ) абсолютно немає причин включати його в HTML. (Ви повинні розмістити його в конфігурації сервера або заголовках веб-сайтів, а не в самому HTML.)

Якщо ви плануєте використовувати X-UA-Compatibleде-небудь у своєму проекті, вам слід пам’ятати, що подання сумісності впливає лише на IE8, 9 та 10. Він був представлений лише в IE8, а вимкнений у IE11.

Також пам’ятайте, що IE11 є єдиною офіційно підтримуваною версією IE на даний момент . Усі попередні версії слід вважати небезпечними.

Якщо цього було недостатньо для того, щоб переконати вас не використовувати його, вважайте, що Microsoft стверджує, що IE8 і вище вже автоматично відображаються в стандартному режимі, коли <!DOCTYPEприсутній a , що робить це ще більш безглуздим.

Ви самі можете переконатися в потоці, який використовує IE, щоб вирішити, який режим документа використовувати:

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

Як бачите, якщо немає X-UA-Compatibleметатегу або заголовка HTTP, він перевіряє налаштування користувача "Перегляд сумісності". Якщо у користувача немає жодного для вашого веб-сайту, IE перевіряє наявність <!DOCTYPEдекларації. Якщо він знаходить його, він автоматично використовує найновіший стандартний режим (він же "EmulateIEx"). Якщо цього не відбувається, він повертається до режиму дивацтва.

Ще більше причин, чому ви не повинні використовувати мета-тег "X-UA-Compatible" від самої Microsoft (наголос на моєму):

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

Іншими словами, це уповільнює візуалізацію початкової сторінки

Директива, сумісна з X-UA, - ​​це інструмент, який дозволяє програмам працювати в найновішій версії Internet Explorer під час оновлення програми .

Він був розроблений лише для тимчасового використання.

Найкращою практикою є сумісний із X-UA заголовок HTTP . Додавання директиви до заголовка відповіді повідомляє Internet Explorer, який механізм використовувати перед початком розбору вмісту. Це потрібно налаштувати на сервері веб-сайту.

Іншими словами, є кращі способи впровадження X-UA-Compatible, якщо це вам абсолютно потрібно.

Починаючи з 12 січня 2016 року, лише остання версія Internet Explorer, доступна для підтримуваної операційної системи, отримуватиме технічну підтримку та оновлення безпеки. Internet Explorer 11 - остання версія Internet Explorer, і надалі буде отримувати оновлення безпеки, виправлення сумісності та технічну підтримку в ОС Windows 7, Windows 8.1 та Windows 10 .

IE11 - це єдина офіційно підтримувана версія IE .

Єдиною причиною включення X-UA-Compatibleмета-тегу у ваш HTML було замінити налаштування користувача "Перегляд сумісності" в IE8, 9 та 10 для вашого веб-сайту. Майже у кожному випадку користувач не змінює цих налаштувань (чому б це робити?), І тепер ці браузери вже навіть не підтримуються.

Коротше кажучи: цей тег мав свій день.


17
Ці блок-схеми фантастичні.
bennettp123

9
Зауважимо, на сьогодні (16.10.2015), правда, що кнопка compat в IE11 відпала, але її все ще можна ввімкнути в меню Налаштування, тому вона все ще існує як можливість. Ми використовуємо його сьогодні, оскільки наше веб-програмне забезпечення використовується в корпоративних інтрамережах, які мають застарілі системи, які вимагають роботи комп’ютерного режиму, тому нам доведеться це обійти. Хоча чудова порада щодо заголовка HTTP, дякую за це!
Дуг Джонсон,

1
Оскільки в IE11 все ще можна ввімкнути перегляд сумісності, і це роблять корпоративні клієнти, заголовок / тег все ще корисний. Я бачу, чому заголовок HTTP є вищим, але якщо тег знаходиться на самому початку DOM, шкоди не наноситься, і лише у браузерах, які не запускалися в режимі Edge. Як положення виключно для випадкових користувачів, які застрягли у поданні сумісності, я не вважаю поганою практикою використовувати тег (прямо у верхній частині <head>).
Том Бутель

2
@ChuckLeButt Або їх адміністратор зробив це "за" ними за допомогою групової політики. І все-таки дуже багато чого в корпоративних налаштуваннях, і це є найбільшим виграшем для нас, коли ми можемо це перекрити.
Том Бутел

2
@ChuckLeButt Я бачу вашу думку і не маю windows-fu, щоб це суперечити ... і тим не менше, наш клієнт сказав нам, що IE11 увімкнено в режимі compat; як вони це отримали, насправді не ділилися з нами знаннями. Не виключено, що вони насправді весь час мали це в явному списку.
Tom Boutell

18

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


Так, це здається допустимим використанням, але в такій ситуації ви, мабуть, захочете помістити його в конфігурацію сервера або в заголовки сайту в будь-якому випадку? stackoverflow.com/a/9338959/199700
Чак Ле Батт

1
Також є зміни, спричинені частково тим, що корпорація Майкрософт трохи вилучила режим сумісності. На додаток до локальної інтрамережі, якщо в домені є багато субдоменів та додатків, додавання подання сумісності для субдомену застосовує його до ЦІЛОГО домену зараз (раніше це застосовувалося лише до конкретного субдомену). Отже, якщо у вас є навіть лише одна програма, яка може цього вимагати, ви повинні зробити це для всіх інших, щоб уникнути проблем із підтримкою.
kilkenny

@ChuckLeButt, заголовки хороші, поки ви знаходитесь у мережі, але якщо користувач вирішить зберігати сторінку локально, вам залишаються лише вбудовані <meta>теги. Ось чому, як правило, гарною практикою є також копіювання важливих заголовків як <meta>тегів.
Равілов

1

Поки для нього встановлено значення “Edge”, він перевіряється як HTML5, і мені кажуть, це призводить до того, що IE повторно відтворює сторінку, лише якщо сайт вже робив її в режимі сумісності. Тим не менше, розміщувати його в конфігурації сервера ( .htaccessі т.д.) краще, ніж вводити HTML кожної сторінки.

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