Почему IE9 переключается в режим совместимости на моем веб-сайте?

Я только что установил бета-версию IE9 и на определенном сайте, который я создал (HTML5). IE9 перескакивает в режим совместимости, если я не скажу ему вручную. Я попытался удалить несколько частей сайта, но никаких изменений. Включает удаление всех CSS. На каком-то другом сайте меня все идет хорошо.

Кроме того, не устанавливайте его вручную, потому что тогда IE9 запоминает пользовательский параметр, и вы не можете вернуть его обратно в автоматическое (или, по крайней мере, я не нашел, даже не используя частный просмотр и очищающий кеш)

В любом случае. Сайт, на котором он переходит в режим совместимости: http://alliancesatwar.com/guide/
Там, где он делает правильный: http://geuze.name/basement/ (я не могу разместить более 1 гиперссылки)

Оба используют один и тот же doctype и все. Эти сайты имеют много общего (помимо внешнего вида), используя один и тот же базовый шаблон (кодирование, метатеги, doctype и один и тот же javascript).

Было бы здорово, если бы у кого-то был ответ для меня! Веб-сайт HTML5, который отображается в IE7-режиме, довольно... lame.

Ответ 1

Работает в IE9 documentMode для меня.

Без X-UA-Compatible header/meta для установки явного documentMode вы получите режим, основанный на:

  • перед тем, как пользователь нажал кнопку "Совместимость" в этом домене;
  • возможно, также, произошло ли это автоматически из-за какого-либо другого содержимого на сайте, вызвавшего аварийный рендеринг IE8/9 и возвращающегося назад к старому средству визуализации;
  • ли пользователь решил поместить все сайты в режим совместимости по умолчанию,
  • указывает ли IE, что сайт находится в вашей интрасети, и поэтому по умолчанию отображается представление совместимости;
  • относится ли данный сайт к собственному списку веб-сайтов Microsoft, для которого требуется просмотр совместимости.

Вы можете изменить эти параметры в меню "Инструменты → Параметры совместимости" в меню IE. Конечно, это меню теперь скрытно скрыто, поэтому вы не увидите его, пока не нажмете Alt.

Как автор сайта, если вы уверены, что ваш сайт соответствует стандартам (хорошо проявляется в других браузерах и использует функцию обнюхивания, чтобы решить, какие браузерные способы использования), я предлагаю использовать:

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

или HTTP-заголовок:

X-UA-Compatible: IE=Edge

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

Ответ 2

Я положил

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

первая вещь после

<head>

(Я читаю его где-то, я не помню)

Я не мог поверить, что это сработало!!

Ответ 3

Чтобы заставить IE отображать в режиме стандартов IE9, вы должны использовать

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

Некоторые условия могут привести к переходу IE9 в режимы совместимости. По умолчанию это может происходить на сайтах интрасети.

Ответ 4

Я написал этот комментарий в отдельном потоке StackOverflow, но подумал, что стоит повторить здесь:

Для нашего собственного приложения ASP.Net добавление тега "X-UA-Compatible" на веб-странице, в файле web.config или в коде, не имеет абсолютно никакого значения.

Единственное, что сработало для нас, - это вручную отключить этот параметр в IE8:

enter image description here

(Вздох.)

Эта проблема возникает только с IE8 и IE9 на сайтах интрасети. Внешние сайты будут работать нормально и использовать правильную версию IE8/9, но для внутренних веб-сайтов IE9 внезапно решает это на самом деле IE7 и не имеет поддержки HTML 5.

Нет, я тоже не совсем понимаю эту логику.

Мое неохотное решение состояло в том, чтобы проверить, поддерживает ли браузер поддержку HTML 5 (создавая холст и проверяя, действительно ли он), и отображая это сообщение пользователю, если оно недействительно:

enter image description here

Это не особенно удобно, но пользователь может отключить эту раздражающую настройку кажется, единственный способ позволить им правильно управлять веб-приложениями HTML 5.

Или попросите пользователей использовать Chrome.; -)

Ответ 5

На сайте http://www.HTML-5.com/index.html есть метатег, совместимый с X-UA, но по-прежнему входит в представление совместимости, как указано в "разорванном page" в адресной строке. Как вы получаете параметр меню, чтобы заставить IE 9 (окончательная версия 9.0.8112.16421) отображать страницу в режиме стандартов? Я попытался щелкнуть правой кнопкой мыши этот разрывающий значок страницы, а также трюк "Alt", чтобы отобразить дополнительные опции меню, упомянутые Rene Geuze, но они не сработали.

Ответ 6

Как и в случае с более современными веб-сайтами, если вы используете условные выражения в своем теге html в соответствии с шаблоном, это по какой-то причине приведет к тому, что ie9 по умолчанию будет работать в режиме совместимости. Исправление состоит в том, чтобы переместить ваши условные выражения из тега html и добавить их в тег тела, другими словами, из раздела главы. Таким образом, вы все равно можете использовать эти классы в своей таблице стилей для ориентации на старые браузеры.

Ответ 7

Выглядит хорошо для меня:

alt text

Вы уверены, что не были в настройках глобально или что-то еще? Это чистая установка бета-версии в Windows 7. Средства разработчика сообщают, что страница по умолчанию работает в стандартном режиме IE9.

Ответ 8

Мне недавно пришлось решить эту проблему, и вот что я сделал:

Прежде всего, это решение связано с настройкой сервера Apache.

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

  • найдите/откройте свой httpd.conf
  • раскомментировать/или добавить следующую строку

    LoadModule headers_module modules/mod_headers.so
    
  • добавить следующие строки

    <IfModule headers_module>
        Header set X-UA-Compatible: IE=EmulateIE8
    </IfModule>
    
  • сохранить/перезагрузить сервер Apache,

  • перейдите на страницу с IE9, используйте такие инструменты, как wireshark или скрипт или использовать инструменты разработчика IE, чтобы проверить заголовок там