Режим совместимости IE: тег «X-UA-Compatible» «Edge»

У меня в <head> есть:

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

Это заставит использовать последний режим рендеринга для IE, но считается ли режим совместимости последним?

Я имею в виду, например: используя этот код с IE8, он заставит его использовать режим совместимости IE8 или IE8?


person Jonathan    schedule 25.11.2010    source источник
comment
Из MSDN: поскольку документы в пограничном режиме отображают веб-страницы с использованием самого высокого режима, доступного для версии Internet Explorer, используемой для их просмотра, рекомендуется использовать этот режим документа только для целей тестирования. Не используйте его в производственных целях. (msdn.microsoft.com/en-us/ библиотека / cc288325 (v = vs.85) .aspx)   -  person Steven    schedule 01.05.2012


Ответы (4)


Этот тег попытается заставить браузер использовать последний режим рендеринга, поддерживаемый браузером. Это не вызовет режим совместимости.

Обратите внимание, что тег должен быть первым тегом в заголовке, иначе он не будет работать. Этот факт способствует использованию заголовков HTTP, если это возможно, поскольку порядок в заголовках HTTP не имеет значения.

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

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

Изменение настроек просмотра совместимости браузеров

Microsoft считает, что по крайней мере 192.168.x.x находится на «сайте интрасети». По умолчанию для сайтов интрасети в IE8 / IE9 используется режим совместимости. Это огромная проблема для многих бизнес-приложений, поскольку программист НЕ МОЖЕТ переопределить эту опцию даже с этим метатегом. («Отображать сайты интрасети в представлении совместимости» нельзя переопределить с помощью метатега или заголовка http - в этом случае браузер полностью контролирует представление совместимости)

Настройки режима совместимости

Всегда добавлять этот метатег или заголовок http?

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

person oldwizard    schedule 15.04.2011
comment
Согласно этому ie.microsoft.com/testdrive/ieblog/2010/Mar / его следует переопределить заголовком. - person Kees C. Bakker; 29.10.2012
comment
Я также пробовал заголовки HTTP, если страница обслуживалась с сайта интрасети, заголовок ничего не делал для удаления режима совместимости, если установлен флажок Отображать сайты интрасети в режиме совместимости. Если вы заставите его работать с заголовком, мне бы очень хотелось узнать, как вы это сделали, чтобы улучшить ситуацию и здесь. :) - person oldwizard; 21.11.2012
comment
Я создал dll Asp.Net, чтобы исправить это для международного клиента, который был в списке MS. На каком языке ты говоришь? - person Kees C. Bakker; 21.11.2012
comment
Красиво, а это работает, если сервер размещен в диапазоне 192.168.x.x? C # или vb не имеет значения. - person oldwizard; 22.11.2012
comment
Третий пункт неверен. Я использую IE8 с сайтами интрасети в режиме совместимости, но метатег правильно переопределяет этот параметр. - person Justin Skiles; 07.02.2013
comment
Вы размещаете сайт на 192.168.x.x. диапазон? Localhost / 127.0.0.1 не считается интрасетью и не запускается в режиме совместимости с этим флажком. - person oldwizard; 15.02.2013
comment
Не отменяется? Еще одна причина совершенно презирать IE. - person Craig; 19.09.2014

Даже если вы сняли флажок «Отображать сайты интрасети в режиме совместимости» и указали X-UA-Compatible в заголовках ответов, есть еще одна причина, по которой ваш браузер в любом случае может по умолчанию использовать «Просмотр в режиме совместимости» - ваша групповая политика. Посмотрите на консоль, чтобы увидеть следующее сообщение:

HTML1203: xxx.xxx настроен для работы в режиме совместимости с помощью групповой политики.

Где xxx.xxx - это домен вашего сайта (например, test.com). Если вы видите это, то групповая политика для вашего домена настроена таким образом, что любой сайт, заканчивающийся на test.com, будет автоматически отображаться в режиме совместимости независимо от типа документа, заголовков и т. Д.

Для получения дополнительной информации перейдите по следующей ссылке (объясняет коды html): http://msdn.microsoft.com/en-us/library/ie/hh180764(v=vs.85).aspx

person rshadman    schedule 24.07.2013
comment
Путем тестирования я обнаружил, что параметр групповой политики просмотра совместимости заставляет Internet Explorer использовать Mozilla / 4.0 (совместимый; MSIE 7.0; ... для пользовательского агента запроса, но метатег X-UA-Compatible IE = Edge приведет к тому, что страница будет отображаться с фактическим пользовательским агентом IE. Таким образом, любое обнаружение браузера на стороне сервера обнаружит IE 7, а обнаружение браузера на стороне клиента обнаружит фактическую версию IE. - person Gavin.Paolucci.Kleinow; 06.03.2014

Я не специалист, а методом проб и ошибок:

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

решил проблему для меня. Я использовал это на веб-сайтах и ​​в веб-приложениях, и он не позволял IE8 переходить в режим совместимости и отображался как «стандартный» в IE10 и IE11.

person MelanieMenard    schedule 16.04.2015

Какой смысл использовать только ключевое слово Edge? Я имею в виду, если вы хотите, чтобы IE использовал самый последний движок рендеринга, просто отбросьте весь метатег.

В противном случае он должен выглядеть примерно так (это заставит IE8 вести себя как IE7 и IE9, а более новые будут работать как обычно):

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7, IE=Edge" />
person unclenorton    schedule 25.06.2011
comment
Не могли бы вы пояснить ссылку на что-то, что это описывает? В случаях, которые я видел, вы либо указываете IE = 8 (или какое-то другое число), запрашивая поведение в IE, близкое к IE8, либо вы указываете IE = edge, чтобы запросить собственное поведение фактической версии, используемой в IE. - person Rasmus Kaj; 09.11.2011
comment
@Rasmus, дело в том, что вы действительно можете указать несколько режимов. Вот соответствующее обсуждение (дополнительные ссылки внутри): stackoverflow.com/questions/3413629/ - person unclenorton; 09.11.2011
comment
Edge используется для того, чтобы пользователь не мог включить режим совместимости. Это очень полезно для нормализации поведения IE. Режим совместимости может нарушить некоторые вещи (например, макет или javascript), и Edge может помочь вам избежать всего этого. Если вы не укажете метатег, пользователь может выбрать режим совместимости и может сломать вашу страницу. - person derickito; 15.11.2012
comment
Не уверен насчет голосов против. дядюшка прав, и его комментарии очень хорошо объясняют его точку зрения. Мой вариант использования: я хочу, чтобы IE8 отображался в IE7, но я не хочу заставлять IE9 и 10 делать то же самое. - person donohoe; 23.02.2013
comment
Проголосование против, вероятно, связано с тем, что сказал Дерикито: Edge используется, чтобы пользователь не мог включить режим совместимости. Это важная функция, чтобы пользователи случайно не сломали вашу страницу, нажав эту глупую кнопку совместимости в адресной строке по ошибке. - person oldwizard; 08.03.2013
comment
IE отображает сайты интрасети в режиме документов IE7. IE=Edge (или другие настройки) преодолевает это. - person Sam; 20.03.2013
comment
Я имею в виду, если вы хотите, чтобы IE использовал самый последний движок рендеринга, просто отбросьте весь метатег. В моем случае на клиентском сервере есть несколько заголовков, которые заставляют IE использовать IE7 в качестве режима документа. Поэтому только край полезен. - person Qar; 17.05.2013