Мыуже не раз говорили о нашем подходе к совместимости с сайтами в общем и о функции Compatibility View, в частности. Но так как мы делились этой информацией на огромном количестве сайтов и в бесчисленном количестве статей, я бы хотел подытожить всю эту информацию в одной статье, чтобы при необходимости вы могли к ней обращаться.
Режим стандартов IE8, используемый по умолчанию Готовясь к выпуску первой бета-версии IE8, команда разработчиков Internet Explorer продемонстрировала свою приверженность совместимости и веб-стандартам, анонсировав, что по умолчанию IE8 будет обрабатывать страницы в режиме, максимально совместимом с утвержденными стандартами. Это значит, что просмотр страниц в режиме стандартов IE8 будет не опциональным, а режимом работы по умолчанию. Мы считаем, что это правильно решение, так как оно ориентировано на будущее. Мы учитываем мнение авторов сайтов. Мы верим в важность стандартов по умолчанию и впредь будет уделять этому вопросу более серьезное внимание.
Совместимость Вследствие принятого решения об обеспечении совместимости по умолчанию есть небольшие последствия, то есть проблемы совместимости с существующими страницами. Большинство сегодняшних веб-сайтов, включая созданные в полном соответствии со стандартами, ожидают старого, менее совместимого поведения от IE, и, в результате, могут работать некорректно. Вот что мы сделали, чтобы решить эту проблему:
Мы распространили информацию обо всей той работе, которую сделала команда для обеспечения поддержки утвержденных стандартов в IE8 (CSS 2.1, Document Object Model, ARIA, cross-domain requests (XDR) и cross document messaging (XDM), а также начало поддержки HTML5), а также обратились к веб-разработчикам с просьбой обновить код их страниц для поддержки режима стандартов в IE8.
Мы пропагандировали использование тега X-UA-Compatible для сайтов, которые не могут быть обновлены для поддержки режима стандартов в IE8. Данный тег позволяет авторам декларировать, в каком режиме стандартов лучше всего работает сайт - стандартов IE8 (опять же, стандартный режим, если отсутствует какой-либо заголовок) или стандартов IE7. Например, использование значения IE=EmulateIE7 приведет к тому, что IE8 будет отображать сайт так, как его отображал бы IE7.
Для конечных и корпоративных пользователей мы предоставили способ уменьшения проблем с совместимостью под одним общим названием Compatibility View. Функция Compatibility View позволяет пользователям IE8 насладиться даже тем сайтом, авторы которого не прибегли к использованию ни одного из вышеназванных способов. Также он позволяет IT-отделам сохранить совместимость с большим количеством собственных сайтов компании, которые сегодня совместимы с Internet Explorer 7.
Compatibility View Впервые функция Compatibility View появилась в сборках Beta 2. В RC-версии на базе отзывов, полученных во время бета-тестирования, мы изменили способ работы с данной функцией. Самым заметным на тот момент изменением, пожалуй, можно считать список обновлений для Compatibility View.
С более подробным описанием работы данной функции можно ознакомиться в наших предыдущих статьях. Ниже я попытался резюмировать важные моменты и собрать воедино информацию, которая была разбросана по нескольким источникам.
При установке браузера пользователь может выбрать, использовать список Compatibility View (и, таким образом, не использовать стандартные предустановленные настройки IE8) или нет. Пользователи должны самостоятельно выбрать использование списка Compatibility View и получать для него обновления, поскольку по умолчанию эта опция отключена. Пользователи также могут щелкнуть по кнопке, которая добавит сайт в список Compatibility View.
Есть два случая, когда использование режима Compatibility View является опцией по умолчанию. Во-первых, сайты, которые находятся в местной интрасети, отображаются в режиме Compatibility View по умолчанию. Это позволяет IE8 быть наиболее совместимым с внутренними сайтами компании, которые ожидают от браузера поведения IE7. Конечно же, пользователь может изменить данные настройки или они могут быть изменены с помощью групповых политик. Еще одним случаем является опция "Автоматическое восстановление после ошибок разметки страницы с помощью просмотра в режиме совместимости". Данная опция заслуживает внимательного изучения в отдельной статье, но здесь я просто отмечу, что данная настройка помогает сделать абсолютно непригодные для просмотра страницы пригодными. Когда механизм визуализации страниц IE сталкивается во время обработки страницы с невосстанавливаемой ошибкой, он показывает чистую страницу, вместо того, чтобы позволить пользователю работать с поврежденной или некорректно отображаемой страницей. В таком случае IE пытается временно (читать: пока вы не закроете и снова не откроете IE) открыть эту страницу в режиме Compatibility View. Мы считаем, что отображение страницы в том виде, как она была бы отображена в IE7, является наиболее логичным вариантом, нежели если бы данная страница не была отображена вообще. Мы много работаем над тем, чтобы решить известные случаи таких ошибок в нашем механизме визуализации.
Владельцы сайтов всегда желают контролировать свой контент. По умолчанию Internet Explorer использует переключатель DOCTYPE для определения использования режимов - Quirks или режим стандартов (снова повторюсь, режим стандартов по умолчанию отвечает режиму стандартов IE8). Владельцы сайтов могут использовать тег X-UA-Compatible чтобы быть абсолютно уверенными в том, как отображается их сайт, и ассоциировать режим стандартов с таковым в IE7. Использование тега X-UA-Compatible изменяет настройки Compatibility View со стороны клиента.
Обновление списка Compatibility View гарантирует, что у пользователей IE8 будет отличный опыт работы с популярными сайтами, которые еще не полностью приспособились к реализации веб-стандартов в IE8.
В последнее время я видел несколько заметок в блогах, в которых выражалась жалоба на функцию списка совместимости, в частности на то, что этот список будет в себя включать несметное количество сайтов, и будет использоваться вечно (и, таким образом, опровергать наше обещание о стандартах по умолчанию). Давайте уделим пару минут обсужденю полученных отзывов. Во-первых, использование списка включается только по выбору пользователя - по умолчанию он не активен. Во-вторых, цель данного списка состоит в том, чтобы у пользователей IE не возникало сложностей при посещении наиболее популярных сайтов в сети. Статистические данные показывают, что процентное соотношение достигнутых уникальных посетителей и среднее количество минут, которое пользователь проводит на сайте, значительно смещено в сторону таких популярных ресурсов как microsoft.com, facebook.com и cnn.com. Популярность доменов означает, что у пользователей был отличный опыт работы с IE8. В-третьих, мы используем отзывы, полученные с помощью телеметрии, сообщениях об ошибках, через утилиту Report a Webpage Problem и так далее, в качестве отправной точки для создания данного списка. Это реальные данные, которые относятся к реальному опыту совместимости; это очень точный способ узнать, какой именно опыт работы у пользователей IE с этими популярными сайтами. Дальше, мы смотрим на обновления списка как на краткосрочную опцию совместимости, и регулярно возвращаемся к необходимости списка как такового. Мы понимаем, что компаниям нужно время на то, чтобы обновить сайты для обеспечения совместимости в связи с переходом Internet Explorer на новый уровень поддержки веб-стандартов. Этот период обновления может очень сильно отличаться в разных организациях. До сего момента полученные отзывы были исключительно позитивными, так как многие понимают, чтоэто позволяет сконцентрироваться на режиме стандартов IE8 в долгосрочной перспективе. Наконец, мы продолжаем контактировать с владельцами сайтов (согласно данным WHOIS) каждого домена в списке и даем им знать об опыте, с которым пользователи IE8 сталкиваются на их сайтах, а также рассказываем им о шагах, которые помогут исправить ситуацию. Мы регулярно обновляем список совместимости, чтобы сделать этот процесс предсказуемым и для сайтов, и для ИТ-отделов.
Иногда кнопка Compatibility View не отображается. Кнопка расположена в адресной строке рядом с кнопками "Stop" и "Refresh". Есть ряд случаев, когда сложно что-то сделать, поэтому кнопка Compatibility View не отображается:
Если вы просматриваете внутреннюю страницу Internet Explorer (такую как about:InPrivate)
Если вы просматриваете страницу, которая заявлена, как готовая к Internet Explorer 8 благодаря использованию специализированного мета-тега или HTTP-заголовка (неважно инициирует данный тег режим Quirks или режим стандартов IE7, IE8, кнопка все равно отображена не будет).
Если вы просматриваете страницу во внутренней сети и включили опцию "Отобразить узлы интрасети в режиме совместимости".
Если вы просматриваете какую-либо страницу и включили опцию "Отобразить все узлы в режиме совместимости".
Если вы просматриваете страницу, включенную в поддерживаемый Microsoft список поддержки, и включили опцию "Добавить обновленные списки веб-узлов с веб-сайта Microsoft".
Если вы переключились между "Режимом документа" и "Режим браузера" в панели разработчиков.
Compatibility View и тег X-UA-Compatible не равнозначны. Compatibility View выполянется на стороне клиента. Данная функция влияет на три вещи: строку агента пользователя, Version Vector (используется при оценке условных комментариев), и в соответствии какому режиму стандартов будет инициирован вариант DOCTYPE - стандартов IE7 или IE8. Мета-тег или заголовок X-UA-Compatible связан с серверной стороной и, когда он используется, то полностью изменяет настройки Compatibility View на стороне клиента. Данный тег влияет на две вещи: Version Vector и какой вариант DOCTYPE этот режим стандартов инициирует. Он не может повлиять на строку агента пользователя, так как ее уже слишком поздно менять - сервер уже отправил серверу запрос GET (и он уже содержит строку агента пользователя). Для разработчика это значит, что если ваш сайт полагается на строку агента пользователя, просто добавив, тег X-UA-Compatible (что заставит IE8 отображать в режиме стандартов IE7) не сделает его совместимым - вам также необходимо будет обновить ваш механизм распознавания строки агента пользователя.