Функциональность IE в сфере совместимости для веб-разработчиков
Веб-разработчики предельно ясно изъявили свое желание увидеть как функциональную совместимость и соответствие стандартам (или «одинаковую разметку») в новых технологиях, так и обратную совместимость для своих существующих веб-узлов. После прочтения вопросов и комментариев по нескольким последним, связанным с вопросами совместимостистатьям, я решил, что пришло время подвести итог всем функциям совместимости IEдля веб-разработчиков. В то время как IEизменяется и обретает поддержку новых технологий, разработчики хотят в некоторых сценариях получить поведение более ранних версий IE. Существует множество различных технологий, позволяющих разработчикам указывать браузеру, как обрабатывать разметку их веб-узлов. Среди основных – Режим обозревателя (BrowserMode) и Режим документов (DocumentMode) в Средствах разработчика IE, мета-тег X-UA-Compatible и HTTP-заголовок и условные комментарии (ConditionalComments). По пожеланиям сообщества разработчиков я также обновил диаграмму Как IE определяет режим документа с учетом IE9. Режим обозревателя и режим документа Множество пользователей, оставлявших комментарии к нашим статьям, спрашивали о разнице между режимом обозревателя и режимом документов. На веб-узле MSDN имеются хорошиестатьи об этих пунктах меню в средствах разработчика. Ниже приведена краткая сводка о том, как использовать эти меню для тестирования вашего веб-узла. Режим обозревателя (Browser Mode) задает, какую строку обозревателя User-Agent (UA) IE отсылает серверам, какие умолчания для режима документов IEиспользуются и как IE оценивает условные комментарии (подробнее об этих составляющих ниже). По умолчанию, режим обозревателя IE9 – IE9, режим обозревателя IE8 – IE8. Будучи разработчиком, вы можете изменить это, выбрав другое значение в меню «Режим обозревателя» в средствах разработчика. Пользователь может изменить режим, нажав вручную на кнопку Просмотр в режиме совместимости (Compatibility View, CV). Большинство пользователей используют Список просмотра в режиме совместимости (CV List), обновляемый Microsoft на основе совместной работы с сообществом.
Режим документов (Document Mode) указывает, какой режим будет использован движком IE Trident для отображения разметки, например, в стандартном режиме IE9. Изменение режима документов обновляет страницу, но не пересылает строку обозревателя (UA) и не получает новую разметку с сервера.
Изменение режима документов для вашего веб-узла Будучи разработчиком, вы выбираете режим документа, который IE будет использовать для отображения вашего веб-узла. По умолчанию это наиболее совместимый и соответствующий стандартам режим. В IE9 это режим IE9 Standards. Если вы считаете нужным, то можете изменить это умолчание, указав тип документа (doctype) и мета-тег X-UA-Compatible или HTTP-заголовок. Чтобы узнать, какой режим наиболее рационально использовать для вашего сайта, вы можете воспользоваться меню «Режим документов» в средствах разработчика. Наиболее удобным способом для изменения режима документов для определенной веб-страницы является использование мета-тега. Для изменения режима документов для большого количества страниц по всему веб-узлу удобнее использовать HTTP-заголовок. В дополнение к значениям X-UA-Compatible, поддерживавшимся в IE8, IE9 будет поддерживать два новых:
При ориентации на режим IE9 Standards мы призываем веб-разработчиков использовать тип документа (doctype) и не использовать мета-тег X-UA-Compatible или HTTP-заголовок. Это позволяет всем достичь общей цели в работе с одинаковой разметкой, основанной на стандартах. Если вы работаете с устаревшим веб-узлом, полагающимся на режим стандартов в понимании IE7, используйте мета-тег X-UA-Compatible или HTTP-заголовок, чтобы задать режим IE7 Standards. Ниже приведен пример, совмещающий значения таким образом, что IE8 отображает веб-страницу в режиме IE7 Standards, в то время как IE9 отображает ее в режиме IE9 Standards: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> Чтобы применить этот результат одновременно ко многим страницам, вы можете изменить HTTP-заголовок и перенести это поведение на некоторые или все страницы на серверах Apache и IIS. Чтобы добиться «одинаковой разметки», в IE9, по сравнению с IE8, было внесено еще одно изменение. Все плавающие фреймы (iframe) внутри страницы верхнего уровня, отображающейся в режиме IE9 Standards, также будут отображаться в режиме IE9 Standards. Единственным исключением являются плавающие фреймы, для которых указан режим Quirks, – они будут отображаться в режиме Quirks. Определяйте функциональность, а не браузер (или «Избегайте условных комментариев») Мы хотим использовать одну и ту же, соответствующую стандартам разметку, как другие браузеры, в режиме IE9 Standards. Именно поэтому мы советуем разработчикам при ориентации на режим стандартов IE9 и режим стандартов других браузеров использовать обнаружение функций и поведения и одинаковые таблицы стилей. Мы настоятельно рекомендуем использовать обнаружение функций и поведения вместо условныхкомментариев (Conditional Comments), функции IE, которую производители других браузеров решили не использовать. Условные комментарии не будут работать во всех браузерах и не подпадают под определение «одинаковой разметки». Есть лишь один случай, когда приемлемо использовать условные комментарии – это обеспечение обратной совместимости таблиц стилей в IE6 или IE7. Например, такие узлы как hsn.com используют условные комментарии для загрузки определенных таблиц стилей в IE7:
IE9 продолжит поддерживать условные комментарии для обеспечения обратной совместимости с существующими веб-узлами. Вот несколько правил, которые помогут вам применить условные комментарии: Условные комментарии по умолчанию связаны со строкой обозревателя (UA). Использование мета-тега X-UA-Compatible или HTTP-заголовка позволяет веб-странице указывать определенную версию для совместимости. Если указанное значение X-UA-Compatible превышает используемую версию IE (8 в IE8, 9 в IE9) или является меньше 7, то вместо версии, заявленной в значении X-UA-Compatible, по-прежнему будет использоваться значение строки обозревателя (UA). Версия IE, отправляемая в строке обозревателя (UA), используется для оценки условных комментариев. Это называется вектором версии (Version Vector). Например, строка обозревателя (UA) IE7 будет иметь вектор версии 7 и условный комментарий <!--[if IE 7]> будет оценен как истинный. IE9 будет отправлять только одну из двух строк обозревателя: строку IE9 или строку режима совместимости (Compat View).
Подводя итог сказанному выше: условные комментарии можно использовать для считывания CSS, предназначенного для IE6 или IE7. Для всего остального используйте обнаружения функций и поведения. Обновленная диаграмма Как IE9 определяет режим документов Чтобы проиллюстрировать, как все эти технологии работают вместе, я обновил диаграмму Определяя режим документов для IE9 (в SVG или PNG) с учетом тех новых значений X-UA-Compatible, о которых было сказано выше. Также мы обновили диаграмму с учетом ваших пожеланий. Спасибо! Марк Силби (Marc Silbey), Руководитель команды разработчиков. |