Ответ 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
в настройках просмотра совместимости.
Это можно сделать, нажав alt
, чтобы получить меню
Edit Этот ответ также относится к IE9