Режимы Internet Explorer

Влад Мержевич

Вокруг Internet Explorer сложилась ситуация, которая больше не прослеживается ни с одним другим браузером — разброс версий начинается с 6.0 и заканчивается 9.0. Причины использования устаревших версий могут быть совершенно разные.

  • Internet Explorer встроен в операционную систему Windows и неопытные пользователи даже не подозревают о наличии альтернативы.
  • Корпоративные пользователи с ограниченным доступом не могут самостоятельно обновить версию или сменить браузер.
  • Обновление IE до новой версии происходит через систему Windows Update, которая часто отключается по требованиям безопасности или для снижения интернет-трафика.
  • Некоторые приложения, например, банковские, могут быть «заточены» для работы только под конкретную версию IE.
  • В силу инерции мышления, когда пользователю нравится та программа, с которой он привык работать.

Сама компания Microsoft всячески поощряет переход на новые версии Internet Explorer и в 2010 году прекратила поддержку IE6 и IE7.

Что касается разработчиков сайтов, то для них такой большой набор версий является настоящей проблемой. Каждая версия IE содержит свои уникальные ошибки, особенности отображения веб-страниц, а также не поддерживает какие-то свойства CSS. Одним из радикальных вариантов решения проблемы является полный отказ разработчика от поддержки определенных версий IE. Так, некоторые сервисы Google, сайт vkontakte.ru при попытке зайти на них через IE6 выдают предупреждение о том, что вы используете устаревший браузер. С другой стороны, некоторые разработчики интернет-магазинов бьются за каждый браузер, полагая, что даже если каким-то браузером пользуется 2%, то отказ от него приведет к потере 2% клиентов.

Из-за того, что каждая версия IE может отображать сайт по своему, разработчики IE8 оказались перед сложной дилеммой — эта версия настолько отличалась от предыдущей, что при просмотре через IE8 бо́льшая часть сайтов «рассыпалась». В итоге было принято решение добавить режим представления совместимости; для быстрого переключения сайтов в этот режим возле адресной строки добавлена специальная кнопка (рис. 1.6а). В действительности при переключении в этот режим браузер начинал работать как версия 7.0. В IE9 пошли еще дальше и в нём уже можно переключаться на IE8 или IE7 (рис. 1.6б).

Кнопка для переключения в режим совместимости Кнопка для переключения в режим совместимости
а б

Рис. 1.6. Кнопка для переключения в режим совместимости
a — в IE8, б — в IE9

Обилие версий IE усложняется еще тем, что версии браузера могут работать в нескольких режимах, порождая большое количество комбинаций, которые необходимо учитывать разработчику. Начиная с версии 8.0, переключение режимов в браузере делается через Средства разработчика (Сервис > Средства разработчика), которое проще вызвать при нажатии на клавишу F12. В этом инструменте доступно два пункта меню связанных с режимами: Режим браузера (рис. 1.7) и Режим документов.

Режимы браузера

Рис. 1.7. Режимы браузера

Выбор режима браузера определяет следующее:

  • строка User-Agent, которую браузер отправляет на сервер, в Microsoft называется «агент пользователя»;
  • версия для условных комментариев, которую в Microsoft называют «вектор версии»;
  • режим документа.

Агент пользователя представляет собой текстовую строку, отправляемую на сервер для идентификации браузера, его версии и операционной системы. Значение User-Agent определяет не только браузер, но также поисковых пауков и сетевых роботов. Список возможных значений User-Agent и разбор строки можно посмотреть на сайте http://www.useragentstring.com. В табл. 1.1 приведены значения User-Agent при выборе разных режимов IE.

Табл. 1.1. Значения User-Agent
Режим браузера User-Agent Описание
IE7 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Tablet PC 2.0; .NET4.0C; AskTbPTV2/5.9.1.14019) Серверу отправляются данные, что браузер IE7.
IE8 Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Tablet PC 2.0; .NET4.0C; AskTbPTV2/5.9.1.14019) Серверу отправляются данные, что браузер IE8.
IE9 Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0) Серверу отправляются данные, что браузер IE9.
Режим совместимости IE9 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Tablet PC 2.0; .NET4.0C; AskTbPTV2/5.9.1.14019) Серверу отправляются данные, что браузер IE7, но значение «Trident/5.0» соответствует IE9.

В вашем случае строка User-Agent может отличаться от приведенных в таблице, поскольку она зависит от версии Windows и её параметров.

Вектор версии позволяет с помощью условных комментариев определять версию IE и отдавать для неё отдельный код. Условные комментарии активно применяются в вёрстке для устранения различий в макете между IE и другими браузерами. Подробнее о них пойдёт речь позже, пока же вы можете ознакомиться с небольшим примером, который показывает текст только в IE8. Остальные браузеры игнорируют этот фрагмент, считая его комментарием.

<!--[if IE 8]>
 <p>У вас браузер IE8.</p>
<![endif]-->

Режим документа меняется с помощью меню в Средствах разработчика (рис. 1.8).

Рис. 1.8. Режимы документа

Начиная с версии IE6, имеются следующие режимы (табл. 1.2).

Табл. 1.2. Режимы документа IE
Режим Описание
IE5 (режим совместимости) Несмотря на то, что браузером IE5 уже никто не пользуется, этот режим применяется во всех старших версиях IE при переключении в режим совместимости. Достаточно не указать доктайп и вы, словно на машине времени, вернётесь в прошлый век к отображению в этом браузере.
IE6 Этот режим работает только в версии 6.0.
IE7 Стандартный режим браузера IE7 и режим при переключении на него в IE8 и IE9.
IE8 Стандартный режим браузера IE8 и режим при переключении на него в IE9.
IE9 Этот режим работает только в версии 9.0.

Кроме переключения непосредственно в браузере, задать режим можно через тег <meta>, отправив HTTP-заголовок X-UA-Compatible.

<meta http-equiv="X-UA-Compatible" content="IE=версия" />

Версия может принимать следующие значения (табл. 1.3).

Табл. 1.3. Режимы документа IE
Значение Описание
5 Вынужденное переключение в режим IE5, доктайп при этом игнорируется.
7 Вынужденное переключение в режим IE7, доктайп при этом игнорируется.
8 Вынужденное переключение в режим IE8, доктайп при этом игнорируется.
9 Вынужденное переключение в режим IE9, доктайп при этом игнорируется.
EmulateIE7 При наличии доктайпа переключается в режим IE7, в противном случае в режим совместимости.
EmulateIE8 При наличии доктайпа переключается в режим IE8, в противном случае в режим совместимости.
EmulateIE9 При наличии доктайпа переключается в режим IE9, в противном случае в режим совместимости.
Edge Устанавливает документ в наиболее новый доступный режим. Для версии 8.0 это режим IE8, для версии 9.0 это режим IE9.

К примеру, на сайте Яндекса применяется следующий код для эмуляции режима IE7.

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

При добавлении данного кода в документ кнопка режима совместимости (рис. 1.6) в браузере исчезает.

HTML по теме

Не выкладывайте свой код напрямую в комментариях, он отображается некорректно. Воспользуйтесь сервисом cssdeck.com или jsfiddle.net, сохраните код и в комментариях дайте на него ссылку. Так и результат сразу увидят.