Share via


Еще раз к вопросу о Compatibility View: только факты

Мы уже не раз говорили о нашем подходе к совместимости с сайтами вообще и о функции 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 насладиться даже тем сайтом, авторы которого не прибегли к использованию ни одного из вышеназванных способов. Также он позволяет ИТ-отделам сохранить совместимость с большим количеством собственных сайтов компании, которые сегодня совместимы с 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 не отображается:

o Если вы просматриваете внутреннюю страницу Internet Explorer (такую как about:InPrivate)

o Если вы просматриваете страницу, которая заявлена, как готовая к Internet Explorer 8 благодаря использованию специализированного мета-тега или HTTP-заголовка (неважно инициирует данный тег режим Quirks или режим стандартов IE7, IE8, кнопка все равно отображена не будет).

o Если вы просматриваете страницу во внутренней сети и включили опцию «Отобразить узлы интрасети в режиме совместимости».

o Если вы просматриваете какую-либо страницу и включили опцию «Отобразить все узлы в режиме совместимости».

o Если вы просматриваете страницу, включенную в поддерживаемый Microsoft список поддержки, и включили опцию «Добавить обновленные списки веб-узлов с веб-сайта Microsoft».

o Если вы переключились между «Режимом документа» и «Режим браузера» в панели разработчиков.

· 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) не сделает его совместимым – вам также необходимо будет обновить ваш механизм распознавания строки агента пользователя.

Итоги

В блогосфере я сталкивался с некоторым непониманием предназначением Compatibility View и я искренне надеюсь, что данная статья поможет все разъяснить. Если у вас появились какие-то вопросы, вы можете оставить их в комментариях, а я, со своей стороны, постараюсь на них ответить.

Скотт Дикенс (Scott Dickens),

руководитель группы разработчиков Internet Explorer

Comments