В своем недавнем посте об ошибке IE CSS я отметил, что проблема возникла в IE8 при запуске на локальном сервере, а не при загрузке файла в Интернет. К счастью, Florent V разгадал загадку: IE8 автоматически переключался в режим совместимости. Но почему это происходит?
Что такое вид совместимости?
После многочисленных проблем, возникающих при обновлении с IE6 до IE7, Microsoft представила представление совместимости в IE8. Эта функция переключает браузер на IE7-подобный механизм рендеринга, если у пользователя возникают проблемы при просмотре страницы в IE8. Теоретически, страница, в которой использовались ошибки и причуды IE7, все еще может отображаться в более новом браузере.
(Обратите внимание, что IE7 и IE8 Compatibility View похожи, но не на 100% идентичны… спасибо, Microsoft!)
Когда IE8 переключается в режим совместимости?
Есть несколько способов перейти к представлению совместимости:
1. Ручной выключатель
Если режим еще не активирован, вы можете переключиться в режим совместимости, щелкнув значок в конце адресной строки.
2. Все сайты
В диалоговом окне «Инструменты»> «Параметры представления совместимости» есть возможность отобразить все сайты в представлении совместимости. Это отключено по умолчанию.
3. Список веб-сайтов Microsoft
Microsoft составляет список веб-сайтов, для которых требуется просмотр в режиме совместимости. Список создается по частоте того, как пользователи нажимают на значок Compatibility View и проверяют человека — вы можете просмотреть его по адресу res: //iecompat.dll/iecompatdata.xml (только IE).
Файл распространяется среди всех пользователей IE8, и сайты в списке автоматически отображаются в виде IE7. Настройка обычно включена.
4. Интранет-сайты
По умолчанию IE8 отображает все сайты интрасети в представлении совместимости. Понятно, почему Microsoft реализовала эту функцию: многие внутренние корпоративные веб-приложения были разработаны специально для более старых версий IE несколько лет назад.
К сожалению, именно эта опция может некорректно запускать вашу последнюю и лучшую работу веб-приложения при тестировании на локальном сервере.
Как IE8 идентифицирует страницу интрасети?
Немного сложно определить, как и когда IE8 идентифицирует страницу как принадлежащую интрасети. Из моего собственного расследования кажется, что доменное имя без точки (.) Считается находящимся во внутренней сети. Обычно непериодические имена доступны в корпоративных сетях с сервером домена или когда в файле hosts на вашем компьютере указано разрешение домена, например
mydomain 127.0.0.1
Однако предполагается, что просмотр локального хоста, 127.0.0.1 или любого другого сетевого IP-адреса (обычно 192.168.xx) является зоной Интернета и не будет запускать режим совместимости.
Как отключить вид совместимости
Когда вы тестируете веб-приложение в IE8, важно знать, какой движок рендеринга используется. Поэтому я бы рекомендовал отключить Compatibility View при тестировании сайтов на локальных ПК или серверах. В IE выберите «Инструменты»> «Параметры представления совместимости», затем снимите флажок « Отображать сайты интрасети в представлении совместимости» .
Надеюсь, это поможет. Представление о совместимости когда-либо вас застало