На сайте Microsoft утверждают, что достаточно простого объявления doctype. Но даже такой короткий документ возвращается в режим IE7:
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
</body>
</html>
На сайте Microsoft утверждают, что достаточно простого объявления doctype. Но даже такой короткий документ возвращается в режим IE7:
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
</body>
</html>
Ответы:
Internet Explorer исходит из предположения, что большинство веб-страниц были написаны для более ранних версий IE, и смотрит на doctype, метатеги и HTML для определения наилучшего режима совместимости (иногда неправильно). Даже с доктипом HTML5 IE по-прежнему переводит ваш сайт в режим совместимости, если это сайт интрасети.
Чтобы на вашем веб-сайте всегда использовался режим последних стандартов, вы можете убедиться, что Display intranet sites in Compatibly
он выключен. Однако вы должны сделать это на каждой машине, локальной для веб-сервера (инструкции приведены ниже).
В качестве альтернативы, что еще лучше, вы можете использовать X-UA-Compatible
заголовок, чтобы отключить это на сервере. Важно отметить, что использование метатега не работает!
<!-- Doesn't always work! -->
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
В MSDN упоминается, что использование заголовка хоста или метатега должно перекрывать даже сайты интрасети. В статье Общие сведения о режимах совместимости в Internet Explorer 8 говорится следующее.
Большое количество внутренних веб-сайтов предприятий оптимизировано для Internet Explorer 7, поэтому это исключение по умолчанию сохраняет совместимость. ... Опять же, если метатег или заголовок http используется для установки режима совместимости для документа, он переопределит эти настройки.
Однако на практике это не сработает, использование заголовка хоста - единственный вариант, который работает. В разделе комментариев к статье также приведены многочисленные примеры именно этой проблемы.
Использование метатега также имеет несколько других проблем, таких как игнорирование тега, если он не находится непосредственно под <head>
тегом или если перед ним слишком много данных (4k). Это также может вызвать повторный анализ документа в некоторых версиях IE, что замедлит отрисовку. Вы можете узнать больше об этих проблемах в статье MSDN « Лучшая практика: приведите свой HEAD в порядок» .
Добавление заголовка X-UA-Compatible
Если вы используете .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чтобы открыть меню.
Изменить Этот ответ также относится к IE9.
alt
для вызова панели инструментов, она находится под инструментами -> настройки просмотра совместимости
Это работает для меня ..
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
X-UA-Compatible
метатег, но все еще не запускает режим документа IE10 Standards по умолчанию для страницы, я обнаружил, что если метатег расположен ниже тегов сценария или просто слишком далеко от вершины <head>
дерева DOM IE10 плачет и устанавливает режим документа на стандарты IE8. Итак, держите ваш IE=edge
метатег закрытым <title>
. Не всегда простое решение для сайтов Wordpress, если оно не прописано в файле шаблона заголовка. Не уверен, заботится ли IE11 о том, где находится метатег, но надеюсь, что это окажется кому-то полезным.
Попробуйте добавить в голову следующий тег
<meta http-equiv="X-UA-Compatible" content="IE=11,IE=10,IE=9,IE=8" />
IE=Edge
вместо этого
Метатег ничего не делает для сайтов интрасети, и моя проблема заключалась в рендеринге 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 в режиме совместимости.
У меня это отлично сработало, когда я сделал следующее:
На http://msdn.microsoft.com/en-us/library/gg699338(v=vs.85).aspx
Использовал точный пример, который они предоставляют в первом поле (добавлено недостающее </html>
внизу), открыл его в IE10, и стандарты были принудительно приняты, я думаю, вам может понадобиться фактическое содержимое в html, чтобы заставить стандарты не уверены.
Я предлагаю заменить ваш пустой код фактическим содержимым (чем-то простым) и посмотреть, что он делает.