Что делает <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.