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

197

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

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

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

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

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

  • 5
    Объясните пожалуйста "переход в режим совместимости"? Если вы видите обновление страницы и всплывающее окно с сообщением о том, что IE обновил эту страницу в представлении совместимости из-за проблемы, это означает, что вы обнаружили ошибку IE под названием «hard assert», которая похожа на сбой в механизме рендеринга. , Мы заинтересованы в поиске и исправлении этих проблем; пожалуйста, отправьте сообщение об ошибке по адресу connect.microsoft.com/ie . Спасибо!
Теги:
internet-explorer-9
compatibility-mode

8 ответов

275
Лучший ответ

Работает в 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 используется.

  • 79
    Важное примечание: если IE 9 настроен на постоянное отображение сайтов интрасети в режиме совместимости, ни метатег, ни заголовок HTTP не будут переопределять это.
  • 29
    Как упоминает Джейкоб, IE может по умолчанию отображать все локальные / интранет-сайты в режиме Compat. Нажмите alt -> Tools Compatability View settings и убедитесь, что у вас не установлен флажок.
Показать ещё 17 комментариев
34

Я положил

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

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

<head>

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

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

  • 0
    Вы должны закрыть вкладку и открыть новую вкладку, вы пробовали это?
  • 1
    Он сказал "сделал" не "не";)
Показать ещё 1 комментарий
22

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

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

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

  • 0
    Это работает на другом сайте. Так что этого не должно быть. Кроме того, этот метатег является злым, поскольку вам придется обновлять его вручную каждый раз, когда появляется новая версия IE.
  • 2
    Извините, я не могу решить вашу проблему. Тем не менее, я отредактировал свой ответ, чтобы вместо него использовать IE=edge , что всегда вызывает использование самого последнего доступного движка.
Показать ещё 4 комментария
6

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

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

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

Изображение 5033

(Вздох.)

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

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

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

Изображение 5034

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

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

1

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

1

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

  • 4
    Удалите условный комментарий IE вокруг мета. Вы обслуживаете страницу как application/xhtml+xml , поэтому используются правила синтаксического анализа XML; XML не поддерживает условные комментарии. В любом случае это не имеет никакого смысла; браузер должен выбрать режим, прежде чем он сможет решить, какие условные комментарии следует интерпретировать.
0

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

Прежде всего, это решение связано с настройкой сервера 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, чтобы проверить заголовок там
0

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

Изображение 5035

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

  • 0
    У меня было более 1 сообщения об этой ошибке. Хотя, возможно, это связано с базовым каталогом ( alliancesatwar.com ), что он также отображает все вложенные каталоги в режиме совместимости. Но тогда у меня возникает вопрос, что в корне сайта заставляет IE рендерить сайт в режиме совместимости? Так что, возможно, по крайней мере, это руководство написано правильно. Я надеюсь, что так.
  • 0
    @Rene Strange, я только что воспроизвел его, нажав на ссылку «Руководство» на главной странице. Но это произошло только один раз, и после нескольких попыток мне еще только предстоит воспроизвести это, только один раз

Ещё вопросы

Сообщество Overcoder
Наверх
Меню