Отключить режим совместимости IE с помощью тегов

Я выполняю работу для клиента, который принудительно поддерживает режим совместимости на всех сайтах интрасети. Мне было интересно, есть ли в моем теге тег, который отключает режим совместимости.

Ответ 1

Существует режим "edge" .

<html>
   <head>
      <meta http-equiv="X-UA-Compatible" content="IE=edge" />
      <title>My Web Page</title>
   </head>
   <body>
      <p>Content goes here.</p>
   </body>
</html>

На связанной странице MSDN:

Режим Edge сообщает Windows Internet Explorer отображать содержимое в максимально доступном режиме, что фактически нарушает парадигму "блокировки". В Internet Explorer 8 это эквивалентно режиму IE8. Если (гипотетический) будущий выпуск Internet Explorer поддерживает более высокий режим совместимости, страницы, установленные в режиме Edge, будут отображаться в самом высоком режиме, поддерживаемом этой версией; однако те же страницы все равно будут отображаться в режиме IE8 при просмотре с помощью Internet Explorer 8.

Однако режим "edge" не рекомендуется при использовании:

Рекомендуется, чтобы веб-разработчики ограничивали использование режима Edge для проверки страниц и других непроизводственных целей из-за возможных неожиданных результатов отображения содержимого страницы в будущих версиях Windows Internet Explorer.

Я честно не понимаю, почему. Но в соответствии с этим лучшим способом перейти на данный момент является использование IE=8.

Ответ 2

После многих часов устранения неполадок этого материала... Вот некоторые быстрые моменты, которые помогли нам из X-UA-Compatible docs: http://msdn.microsoft.com/en-us/library/cc288325(VS.85).aspx#ctl00_contentContainer_ctl16

Используя <meta http-equiv="X-UA-Compatible" content=" _______ " />

  • Режимы стандартного пользовательского агента (неэмулирующие) игнорируют директивы <!DOCTYPE> на вашей странице и выполняют рендеринг на основе стандартов, поддерживаемых этой версией IE (например, IE=8 лучше будут соблюдать границы таблицы и некоторые псевдоселекторы, чем IE=7).

  • В то время как режимы Emulate сообщают IE, что они следуют любым директивам <!DOCTYPE> на вашей странице, в соответствии со стандартом на основе выбранной вами версии и режима quirks на основе IE=5

  • Возможные значения для атрибута content:

    content="IE=5"

    content="IE=7"

    content="IE=EmulateIE7"

    content="IE=8"

    content="IE=EmulateIE8"

    content="IE=9"

    content="IE=EmulateIE9"

    content="IE=edge"

Ответ 3

Если вы работаете со страницей в зоне интрасети, вы можете обнаружить, что IE9 независимо от того, что вы делаете, переходит в режим совместимости IE7.

Это связано с настройкой в ​​настройках совместимости IE, в которой говорится, что все сайты интрасети должны запускаться в режиме совместимости. Вы можете отключить это с помощью групповой политики (или просто отключить ее в IE), или вы можете установить следующее:

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

Это работает (как описано в других ответах), но может не отображаться вначале так: он должен появиться до объявления стилей. Если вы этого не сделаете, он будет проигнорирован.

Ответ 4

Я считаю, что это сделает трюк:

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

Ответ 5

Как было предложено в этом ответе на соответствующий вопрос, режим "edge" может быть установлен в файле Web.Config. Это применит ко всему HTML, возвращенному из приложения, без необходимости вставлять его на отдельные страницы:

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

Этот же шаг можно также выполнить, изменив "Заголовки ответов HTTP" с помощью диспетчера IIS для сервера IIS, всего веб-сайта или конкретных приложений.

Ответ 6

Решение метатега не работало для нас, но установка его в заголовке ответа сделала:

header('X-UA-Compatible: IE=edge,chrome=1');

Ответ 7

Еще несколько заметок на эту тему, основанные на моем недавнем опыте. В университете я работаю над выпуском ноутбуков с IE 8, установленными в режим совместимости для всех сайтов интрасети. Я попытался добавить метатег, чтобы отключить этот режим для страниц, обслуживаемых моим сайтом, но IE последовательно игнорировал этот тег. Как упоминал Ланс в своем посте, добавление заголовка ответа исправило эту проблему. Вот как я устанавливаю заголовок на основе шаблона HTML5:

<IfModule mod_headers.c>
  Header set X-UA-Compatible "IE=edge,chrome=1"
  # mod_headers can't match by content-type, but we don't want to send this header on *everything*...
  <FilesMatch "\.(appcache|crx|css|eot|gif|htc|ico|jpe?g|js|m4a|m4v|manifest|mp4|oex|oga|ogg|ogv|otf|pdf|png|safariextz|svg|svgz|ttf|vcf|webm|webp|woff|xml|xpi)$">
    Header unset X-UA-Compatible
  </FilesMatch>
</IfModule>

Для того, чтобы этот заголовок действительно был отправлен, вы должны убедиться, что в Apache включен mod_headers. Если вы хотите убедиться, что этот мод включен, поместите это на страницу, на которой можно запустить php:

<pre>
<?php
    print_r(apache_get_modules());
?>
</pre>

Ответ 8

IE8 по умолчанию использует режим стандартов для режима intERnet и quirks для intRAnet. Метатег HTML игнорируется, если у вас установлен doctype на xhtml transitional. Решение состоит в том, чтобы добавить HTTP-код в код. Это сработало для нас. Теперь наш сайт интрасети заставляет IE8 отображать приложение в стандартном режиме.

Добавлено в PageInit базового класса страницы (ASP.net С#):

Response.AddHeader("X-UA-Compatible", "IE=EmulateIE8");

ссылка: http://ilia.ws/archives/196-IE8-X-UA-Compatible-Rant.html

Ответ 9

Это связано с настройкой в ​​настройках совместимости IE, в которой говорится, что все сайты интрасети должны запускаться в режиме совместимости. Вы можете отключить это с помощью групповой политики (или просто отключить ее в IE), или вы можете установить следующее:

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

По-видимому, невозможно изменить параметры представления совместимости в качестве групповой политики, но это может быть возможно изменить в реестре, этот метатег отлично работает для меня, мне пришлось сделать требуемый атрибут работой как часть html-форму, он работал в chrome и firefox, но не в IE.

Здесь хорошо видно, какие браузеры поддерживают каждый отдельный элемент html 5.

http://html5readiness.com/

Обратите внимание на один общий знаменатель Google Chrome, он поддерживает все. Надеюсь, что это поможет.

Ответ 10

Вставить как самый первый элемент под тегом.

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

Ответ 11

Если у вас есть доступ к серверу, самый надежный способ сделать это - сделать это на самом сервере в IIS. Перейдите в заголовки ответов HTTP IIS. Добавить Имя: X-UA-совместимый
Значение: IE = край Это переопределит ваш браузер и ваш код.

Ответ 12

Если вы хотите, чтобы каждая отдельная веб-страница загружала выбранный контент и использует asp.net. Просто примените его как первый тег под тегом заголовка в Views> shared> Layout.cshtml

просто подсказка