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

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

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

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

</body>
</html>

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

4b9b3361

Ответ 1

Internet Explorer делает предположение, что большинство веб-страниц было написано для нацеливания на более ранние версии IE и просматривает doctype, метатеги и 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-заголовок, он переопределит эти параметры.

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

Использование метатега также имеет несколько других проблем, таких как игнорирование тега, если оно не находится непосредственно под тегом <head> или если перед ним слишком много данных (4k). Он также может инициировать повторный просмотр документа в некоторых версиях IE, что замедляет рендеринг. Подробнее об этих проблемах читайте в статье MSDN Best Practice: получите свой 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, сайт всегда будет работать в режиме последних стандартов.

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

Compatibility View Settings

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

enter image description here

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

Ответ 2

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

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

Ответ 3

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

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

Ответ 4

Метатег не делает ничего для сайтов интрасети, и моя проблема была в IE10 в режиме совместимости с IE10. Для решения этой проблемы я принял @Jeow answer и использовал это значение в 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 в режиме совместимости.

Ответ 5

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

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

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

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