it-swarm.com.ru

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

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

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

</body>
</html>

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

121
firedev

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

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

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

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

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

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

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

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

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

Если вы используете .net и IIS, вы можете добавить это в web.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');

Пока заголовок X-UA-Compatible присутствует с html5 doctype, сайт всегда будет работать в режиме последних стандартов.

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

Compatibility View Settings

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

enter image description here

Редактировать Этот ответ также относится к IE9

243
Daniel Little

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

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

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

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

Мета-тег ничего не делает для сайтов интрасети, и моя проблема заключалась в отображении 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 в режиме совместимости.

2
o.v.

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

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

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

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

1
ZacNespral21