Что делает <meta http-эквивалент = «X-UA-совместимый» контент = «IE = край»>?


1439

Какая разница, если одна веб-страница начинается с

<!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.

Ответы:


1704

Обновление за октябрь 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:

Если вы используете мета-тег X-UA-Compatible, вы хотите разместить его как можно ближе к верху заголовка страницы. Internet Explorer начинает интерпретацию разметки с использованием последней версии. Когда Internet Explorer обнаруживает мета-тег, совместимый с 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 поддерживает несколько режимов совместимости документов, которые включают различные функции и могут влиять на способ отображения содержимого:

  • В пограничном режиме 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; он также обеспечивает ограниченную поддержку спецификации уровня 3 каскадных таблиц стилей W3C (рабочий проект) и других новых стандартов.

  • В режиме IE7 контент отображается так, как если бы он отображался в стандартном режиме Internet Explorer 7, независимо от того, содержит ли страница директиву.

  • Режим эмуляции IE9 указывает Internet Explorer использовать директиву для определения способа отображения содержимого. Директивы стандартного режима отображаются в режиме IE9, а директивы режима совместимости отображаются в режиме IE5. В отличие от режима IE9, режим эмуляции IE9 соответствует директиве.

  • Режим эмуляции IE8 указывает Internet Explorer использовать директиву для определения способа визуализации содержимого. Директивы режима стандартов отображаются в режиме IE8, а директивы режима причуд отображаются в режиме IE5. В отличие от режима IE8, режим эмуляции IE8 соответствует директиве.

  • Режим эмуляции IE7 указывает Internet Explorer использовать директиву для определения способа отображения содержимого. Директивы режима стандартов отображаются в стандартном режиме Internet Explorer 7, а директивы режима причуд отображаются в режиме IE5. В отличие от режима IE7, режим эмуляции 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>

Пограничный режим был представлен в Internet Explorer 8 и был доступен в каждом последующем выпуске. Обратите внимание, что функции, поддерживаемые пограничным режимом, ограничены функциями, поддерживаемыми конкретной версией браузера, отображающей содержимое.

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

Если вам необходимо настроить таргетинг на конкретный режим документа, чтобы ваш сайт функционировал, пока вы переделываете его для поддержки современных стандартов и функций, имейте в виду, что вы используете переходную функцию, которая может быть недоступна в будущих версиях.

Если в настоящее время вы используете заголовок, совместимый с x-ua, для таргетинга на унаследованный режим документов, возможно, ваш сайт не будет соответствовать наилучшим возможностям IE11.

Microsoft Edge (замена для Internet Explorer, поставляемого в комплекте с Windows 10)

Информация о X-UA-Compatibleметатеге для "Edge" версии IE. От Microsoft :

Представляем «живой» режим пограничного документа

Как мы объявили в августе 2013 года, мы не поддерживаем режимы документов начиная с IE11. С нашими последними обновлениями платформы потребность в устаревших режимах документов в основном ограничивается устаревшими веб-приложениями Enterprise. С новыми архитектурными изменениями эти устаревшие режимы документов будут изолированы от изменений в «живом» режиме Edge, что поможет гарантировать гораздо более высокий уровень совместимости для клиентов, которые зависят от этих режимов, и поможет нам еще быстрее перейти к улучшениям в Edge , IE будет по-прежнему соблюдать режимы документов, обслуживаемые сайтами интрасети, сайтами в списке совместимости и только при использовании в режиме предприятия.

Общедоступные интернет-сайты будут отображаться с новой платформой режима Edge (игнорируя 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предназначен для Google Chrome Frame, который определяется как:

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">. Для других значений будет выдано сообщение об ошибке: 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 или bitinn за более подробной информацией о том, как установить HTTP-заголовок.

XHTML

Нет проблем с проверкой при использовании, <meta http-equiv="X-UA-Compatible" content="IE=Edge" />если тег правильно закрыт (т. />Е. Против >).

Twitter Bootstrap

Этот тег настоятельно рекомендуется командой Bootstrap по крайней мере с 2014 года, и Bootlint , линтер , созданный командой twbs, продолжает выдавать предупреждение, если тег пропущен. Линтер различает предупреждения и ошибки, и поэтому серьезность пропуска этого тега может считаться незначительной.


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

Для получения дополнительной информации о том, что поддерживает IE, см. Caniuse.com .

Для получения дополнительной информации о требованиях Twitter Bootstrap см. Вики-страницу проекта bootlint .


40
Если у меня не будет заголовка "X-UA-Compatible", что произойдет?
Морган Ченг

45
В основном, что происходит, когда у вас есть X-UA-Compatible, он сообщает IE, как вести себя в отношении значения, которое вы установили (IE = edge и т. Д.), Если его там нет, 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 будет удален
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 как предложено pixeline

    <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, предложенный Stef Pause

    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 (начиная с версии 7)

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

Microsoft рекомендует режим Edge начиная с IE11

Как заметил Линда (см. Комментарии), для изменения совместимости в IE11 рекомендуется режим Edge :

Начиная с IE11, режим края является предпочтительным режимом документа; он представляет самую высокую поддержку современных стандартов, доступных для браузера.

Но позиция Microsoft была неясной. Другая страница MSDN не рекомендует Edge mode :

Поскольку в пограничном режиме все страницы открываются в стандартном режиме, независимо от версии Internet Explorer, у вас может возникнуть желание использовать это для всех страниц, просматриваемых в Internet Explorer. Не делайте этого, поскольку X-UA-Compatibleзаголовок поддерживается только начиная с Windows Internet Explorer 8.

Вместо этого Microsoft рекомендовала использовать <!DOCTYPE html>:

Если вы хотите, чтобы все поддерживаемые версии Internet Explorer открывали ваши страницы в стандартном режиме, используйте декларацию типа документа HTML5 [...]

В виде Рикардо объясняет (в комментариях ниже), любой DOCTYPE (HTML4, XHTML1 ...) может использоваться для запуска режима стандартов, а не только DOCTYPE HTML5. Важно всегда иметь DOCTYPE на странице.

Клара Онагер даже заметила в более старой версии Указание устаревших режимов документов :

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

Это так сбивает с толку, что Усман Y думал, что Клара Онагер говорит о:

[...] пример приведен только для иллюстрации; не используйте его в производственной среде.

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

Хорошо ... В остальной части этого ответа я даю больше объяснений, почему использование content="IE=edge,chrome=1"является хорошей практикой в ​​производстве.


история

В течение многих лет (с 2000 по 2008 год) доля рынка IE составляла более 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
«Режим Edge предназначен только для тестирования; не используйте его в производственной среде. См. Msdn.microsoft.com/en-us/library/jj676915(v=vs.85).aspx
Карл

5
Пожалуйста @ClaraOnager уделите некоторое время, чтобы объяснить, что не так в моем ответе (с вашей точки зрения). Даже если MS не рекомендует использовать режим Edge в производственной среде, есть веские причины использовать его в производственной среде. Важно технически уточнить наши лучшие практики. Мне нравится делиться своими знаниями и опытом. Я надеюсь ты тоже. Мы можем улучшить вместе;) Ура
olibre

2
Привет @ Рикардо, я согласен с тобой. Microsoft говорит: «Если вы хотите, чтобы все поддерживаемые версии Internet Explorer открывали ваши страницы в стандартном режиме, используйте HTML5 [...]» в разделе « Общие сведения о старых режимах документа» (см. Совет ). Может быть, мое объяснение неясно ... Может быть, я что-то неправильно понял ... Я изменил свой текст ... Что вы думаете о моих изменениях? это нормально для вас? Что вы посоветуете изменить / улучшить в моем ответе? Спасибо за ваш отзыв. Приветствия ;-)
olibre

5
@ClaraOnager ... в своем первом ответе вы указали неверно, на странице ссылок. MS говорит, что не следует использовать в производственной среде для: <meta http-эквивалент = "X-UA-Compatible" content = "IE = 7, 9,10 "> не другие вещи Edge.
Усман Юнас

3
Об использовании Edge Mode в производственной среде. От 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 имеют приоритет. По умолчанию эти настройки переводят все сайты интрасети в режим совместимости независимо от DOCTYPE. Также имеется флажок для использования представления совместимости для всех веб-сайтов, независимо от DOCTYPE.

Диалоговое окно «Параметры совместимости 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
Я бы хотел, чтобы я мог ответить на этот вопрос сто раз. Спасательный экран захватить прямо здесь.
Понижение

Офигенно офигенно офигенно! Большое спасибо за этот ответ.
Seanosapien

25

Используйте это, чтобы заставить IE скрывать эту раздражающую кнопку совместимости браузера в адресной строке:

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

1
«Режим Edge предназначен только для тестирования; не используйте его в производственной среде. См. Msdn.microsoft.com/en-us/library/jj676915(v=vs.85).aspx
Карл

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
Ricardo 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
Условные комментарии не должны использоваться, КРОМЕ для целевого HTML для <= IE9. (Это было правдой, даже когда этот ответ был написан)
EKW

18

Я думаю, что эта диаграмма от Microsoft объясняет все. Чтобы сообщить IE, как отображать содержимое,! DOCTYPE должен работать с метатегом X-UA-Compatible. ! DOCTYPE сам по себе не влияет на изменение режима документа IE.

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

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"). Если это не так, он возвращается к «Режиму причуда».
Чак Ле Батт

Спасибо за загрузку изображения в Stackoverflow. Оригинальные ссылки на Microsoft все мертвы.
Эльмуе

12

Просто для полноты, вам на самом деле не нужно добавлять его в ваш HTML (который неизвестен http-эквивалент в 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

Это буквально 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 Most наиболее полезен для регулярно поддерживаемых веб-сайтов, которые регулярно тестируются на совместимость между несколькими браузерами, включая Internet Explorer.

Примечание. Начиная с IE11, режим края считается предпочтительным режимом документа. (В более ранних версиях это считалось экспериментальным.) Для получения дополнительной информации см. Режимы документов устарели. Начиная с Windows Internet Explorer 8, некоторые веб-разработчики использовали метаэлемент крайнего режима, чтобы скрыть кнопку представления совместимости в адресной строке. Начиная с IE11, в этом больше нет необходимости, поскольку кнопка была удалена из адресной строки. Поскольку он заставляет открывать все страницы в стандартном режиме, независимо от версии Internet Explorer, у вас может возникнуть соблазн использовать граничный режим для всех страниц, просматриваемых с помощью Internet Explorer. Не делайте этого, так как заголовок X-UA-Compatible поддерживается только начиная с 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.