Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Добрый день! Меня зовут Тони Росс и я являюсь одним из программных менеджеров Internet Explorer. Мы уже говорили о том, что стремимся сделать Internet Explorer 8 настолько доступным, насколько это в принципе возможно. В новом браузере будет усовершенствовано взаимодействие с различными видами контента и внедрены функции, облегчающие задачи, стоящие перед веб-мастерами. Следуя этим целям, я расскажу об изменениях, внесенных в код приложения для улучшенной поддержки ARIA – синтаксиса, обеспечивающего доступ к динамическому содержимому страницы. В этой статье я расскажу, как IE работал прежде, каким образом осуществляется обработка соответствующего кода в настоящий момент и что сделанные изменения означают для пользователя.
Как IE работал прежде?
Поддержка ARIA была добавлена еще в первой бета-версии, однако, существовали определенные отличия в синтаксисе, зависевшие от режима работы браузера. В стандартном режиме доступ к атрибутам ARIA был реализован через скрипт, использующий стандартный синтаксис:
value = elm.getAttribute("aria-checked");
В режимах обратной совместимости, например, с IE7 и quirks-режиме, требовалось использование сamelCased-режима для преобразования имени искомого атрибута:
value = elm.getAttribute("ariaChecked");
Необходимость использовать различный синтаксис может сначала показаться странной, но это обусловлено тем, как IE обрабатывает атрибуты и свойства объектов. Свойства присутствуют в объектах в форме elm.property. Для удобства разработчиков веб-страниц IE автоматически привязывает атрибуты к свойствам. Если имя оригинального атрибута содержит дефис, IE адаптирует его для генерации необходимого синтаксиса:
value = elm.ariaChecked;
Без этого усовершенствования каждый дефис в имени интерпретировался бы как "минус":
value = elm.aria-checked; // Попытка доступа к содержимому с дефисом
value = elm.aria – checked; // Значение дефиса для интерпретатора скрипта
Прежние версии IE и режимы совместимости IE8 используют одно и то же имя как для свойств, так и для атрибутов. Следовательно, изменение имени свойства влияет на синтаксис команды getAttribute. Это изменение применяется для всех оригинальных атрибутов с дефисом, а не только для тех, которые являются частью ARIA. IE не интерпретирует неизвестные атрибуты и просто не обрабатывает такие имена, как, например, «foo-bar». В стандартном режиме IE8 удается избегать этой проблемы, используя отдельные имена для атрибутов и свойств.
Как IE работает теперь?
Изначально поддержка стандартного синтаксиса ARIA в режиме совместимости с IE7 и quirks-режиме не была реализована из-за сложностей, о которых сказано выше. Обратная совместимость – приоритетная задача и смысл существования этих режимов, поэтому наша команда крайне осторожна при внесении изменений в их архитектуру.
Однако, мы получили массу отзывов, в которых выражается озабоченность тем, что используются два синтаксиса для ARIA. Отзывы приходили от веб-мастеров, производителей оборудования и представителей организаций по стандартизации. Их озабоченность вызывало главным образом существование множества ресурсов, которые не оптимизированы для работы с IE8 в стандартном режиме. Для них добавление поддержки ARIA означало дилемму: либо выбрать один из двух синтаксисов, либо прилагать дополнительные усилия для поддержки обоих вариантов.
Признав критику в свой адрес справедливой, мы вновь проанализировали поведение IE при обработке ARIA. Прежние версии программы вообще не имели поддержки этой технологии. Они интерпретировали атрибуты ARIA как неопределяемые и не переписывали их имена в camelCase-варианте. Это означало, что механизм программы обрабатывал ARIA, используя стандартный синтаксис, но в то же время информация о результатах обработки не была доступна через интерфейс программирования, такой, например, как Microsoft Active Accessibility (MSAA).
Принимая во внимание эти сведения вместе с полученными отзывами, мы решили внести изменения в работу браузера. Теперь IE8 будет правильно интерпретировать дефис в именах атрибутов и свойств при работе с ARIA. Как часть этих изменений, camelCase-вариант для свойств ARIA больше не будет использоваться, что позволит избежать конфликта между именами. Теперь достаточно применения стандартного синтаксиса, чтобы IE8 без ошибок работал с контентом, поддерживающим функции ARIA, – не имеет значения, какой из режимов браузера используется:
value = elm.getAttribute("aria-checked");
Что же означают эти изменения?
Для веб-дизайнеров:
Теперь использовать ARIA в содержимом веб-страниц станет еще проще. Исключена необходимость поддержки разнородных синтаксисов.
· Один синтаксис для всех режимов обозревателя
· Одинаковый синтаксис для всех браузеров
· Один синтаксис, отвечающий требованиям общего стандарта.
Для рядовых пользователей:
Эти изменения делают множество прежде несовместимых страниц отныне совместимыми с IE8, поскольку теперь все режимы обозревателя поддерживают стандарт ARIA.
Для ARIA:
Указанные изменения помогут успешнее внедрять стандартный синтаксис для ARIA, поскольку не нужно больше беспокоиться по поводу необходимости работать с альтернативным вариантом.
Заключение
Вместо использования нескольких синтаксисов для ARIA, как это было в первой бета-версии IE8, теперь можно использовать только один, полностью отвечающий разработанному стандарту. Эти изменения были сделаны с тем, чтобы обеспечить положительный эффект использования браузера для веб-мастеров, пользователей и самого стандарта ARIA. Команда разработчиков IE выражает глубокую благодарность всем, кто обратился к ним со своими замечаниями и предложениями. Роль компьютерного сообщества в принятии подобных решений поистине трудно переоценить.
Тони Росс (Tony Ross),
программный менеджер Internet Explorer