Выключить режим совместимости IE с помощью тегов - PullRequest
359 голосов
/ 10 августа 2010

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

Ответы [ 12 ]

515 голосов
/ 10 августа 2010

Есть режим "край" .

<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:

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

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

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

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

90 голосов
/ 23 февраля 2011

После многих часов поиска и устранения неисправностей в этом материале ... Вот несколько быстрых моментов, которые помогли нам из X-UA-Compatible документов: 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).

  • Принимая во внимание, что режимы Эмуляция предписывают IE следовать любым директивам <!DOCTYPE> на вашей странице, отображая режим стандартов на основе выбранной версии и режим причуд на основе 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"

64 голосов
/ 14 января 2013

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

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

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

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

27 голосов
/ 10 августа 2010

Я верю, что это поможет:

<meta http-equiv="X-UA-Compatible" content="IE=edge" />
26 голосов
/ 24 июля 2015

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

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

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

18 голосов
/ 09 февраля 2013

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

header('X-UA-Compatible: IE=edge,chrome=1');
10 голосов
/ 03 мая 2013

Еще несколько заметок на эту тему, основанных на моем недавнем опыте. В университете я работаю над проблемами ноутбуков с 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:

<code><pre>
<?php
    print_r(apache_get_modules());
?>
9 голосов
/ 16 января 2012

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

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

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

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

3 голосов
/ 24 сентября 2013

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

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

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

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

http://html5readiness.com/

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

0 голосов
/ 13 июля 2018

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

просто совет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...