IE10 отображает в режиме IE7. Как заставить режим стандартов?


на сайте microsoft они утверждают, что достаточно простого объявления doctype. Но даже такой короткий документ возвращается в режим IE7:

<!DOCTYPE html>
<html>
<head>
   <title></title>
</head>
<body>

</body>
</html>

http://d.pr/i/fvzb+

5 119

5 ответов:

Internet Explorer делает предположение, что большинство веб-страниц были написаны для более ранних версий IE и смотрит на doctype, мета-теги и HTML, чтобы определить лучший режим совместимости (иногда неправильно). Даже с HTML5 doctype IE по-прежнему будет размещать ваш сайт в режиме совместимости, если это сайт интрасети.

чтобы убедиться, что ваш сайт всегда использует последний режим стандартов, вы можете либо убедиться Display intranet sites in Compatibly выключен. Однако вы должны сделать это каждая машина локальна для веб-сервера (инструкции приведены ниже).

альтернативно и еще лучше вы можете использовать X-UA-совместимый заголовок, чтобы отключить его от сервера. Важно отметить, что использование мета-тега не будет работать!.

<!-- Doesn't always work! -->
<meta http-equiv="X-UA-Compatible" content="IE=edge" />

во всем MSDN упоминается, что использование заголовка хоста или мета-тега должно переопределять даже intranet sites. В статье понимание режимов совместимости в internet explorer 8 говорит следующий.

большое количество внутренних бизнес-веб-сайтов оптимизированы для Internet Explorer 7, поэтому это исключение по умолчанию сохраняет эту совместимость. ... Опять же, если метатег или заголовок http используется для установки режима совместимости для документа, он переопределит эти параметры.

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

использование мета-тега также имеет несколько других проблем, таких как игнорирование тега, если он не находится непосредственно под <head> тег или если перед ним слишком много данных (4k). Это также может вызвать документ, который будет повторно обработан в некоторых версиях IE, что замедлит рендеринг. Вы можете прочитать больше об этих проблемах в статье MSDN Лучшая практика: приведите свою голову в порядок.

добавление заголовка, совместимого с X-UA

если вы используете .net и IIS, вы можете добавить это в интернет.config, вы также можете сделать это программно:

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

если вы не используете IIS, это легко сделать на любом языке, например, вот как это сделать в php:

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

пока х-УА-совместимый заголовок присутствует с HTML5 тип документа сайт всегда будет работать в режиме последних стандартов.

отключение режима совместимости
Это все еще может быть полезно чтобы отключить представление совместимости. Для этого снимите галочку Display all intranet sites in compatibility view в настройках представления совместимости.

Compatibility View Settings

вы можете поднять это, нажав alt чтобы получить меню

enter image description here

Edit Этот ответ также относится к IE9

это работает для меня..

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

попробуйте добавить следующий тег в голову

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

метатег ничего не делает для сайтов интрасети, и моя проблема заключалась в рендеринге IE10 в режиме совместимости IE10. То, что решило проблему для меня, было взято @Jeow это далее и используя это значение в заголовке http, добавив следующее в web.config под IIS:

<system.webServer>
  <httpProtocol> 
    <customHeaders> 
      <clear />
      <!-- <add name="X-UA-Compatible" value="IE=edge" /> not good enough -->
      <add name="X-UA-Compatible" value="IE=11,IE=10,IE=9,IE=8" /> 
    </customHeaders> 
  </httpProtocol>
</system.webServer>

для целей IE сайты интрасети включают общедоступные сайты, которые не маршрутизируются извне - например, сотрудник Stackoverflow, работающий из офиса, вероятно, увидит stackoverflow.com в режиме совместимости.

Он работал отлично для меня, когда я сделал следующее:

On http://msdn.microsoft.com/en-us/library/gg699338 (v=vs.85). aspx

использовал точный пример, который они предоставляют в первом поле(добавлено отсутствующее </html> внизу), открыл его в IE10 и стандарты были вынуждены, я думаю, вам может понадобиться фактический контент в html для того, чтобы заставить стандарты не уверены, хотя.

мое предложение было бы заменить пустой код на фактический содержание(что-то простое) и посмотреть, что он делает.