Поддержка специальных возможностей в ASP.NET
Обновлен: Ноябрь 2007
С помощью ASP.NET разработчик может создавать веб-приложения, которые могут использовать пользователи с ограниченными возможностями. Веб-приложения со специальными возможностями позволяют пользователям применять для работы с веб-страницами вспомогательные технологии, например средства чтения с экрана. Веб-приложения со специальными возможностями имеют следующие преимущества:
Они могут использоваться максимально широкой аудиторией.
Они включают в себя функции, которыми пользуются все пользователи, а не только пользователи с ограниченными возможностями.
Они соответствуют требованиям многих учреждений, требующих наличия специальных возможностей во всех веб-приложениях.
Ознакомившись с основными принципами специальных возможностей и вспомогательными средствами ASP.NET, разработчики могут создавать приложения, с которыми легко могут взаимодействовать пользователи с ограниченными возможностями.
Руководства по специальным возможностям
Различные учреждения публикуют руководства, описывающие создание приложений со специальными возможностями. Следующие руководства известны достаточно широко:
Рекомендации по специальным возможностям для веб-содержимого 1.0 (WCAG).
Эти стандарты разработаны консорциумом W3C и являются основой для многих других стандартов специальных возможностей. В эти рекомендации включены стандарты специальных возможностей, которые используются официальными учреждениями по всему миру.
Рекомендации по специальным возможностям для веб-содержимого доступны на веб-узле Консорциума (W3C).
В рекомендациях WCAG описаны различные уровни приоритетов с помощью шкалы от 1 до 3 для контрольных точек, которые связаны с каждой рекомендацией. Некоторые учреждения требуют, чтобы все веб-узлы соответствовали всем базовым положением приоритета 1 и приоритета 2.
Раздел 508.
Стандарты специальных возможностей определены правительством Соединенных Штатов в статье 508 Закона о восстановлении, который подобен рекомендациям WCAG.
Статья рекомендаций 508 доступна на веб-узле http://www.section508.gov.
Руководства корпорации Майкрософт по специальным возможностям.
Руководства корпорации Майкрософт по специальным возможностям расположены на веб-узле Microsoft Accessibility, а также на веб-узле MSDN Library при поиске «Accessibility Design Guidelines for the Web.»
Тестирование специальных возможностей
В некоторой степени можно протестировать, насколько веб-страницы соответствуют стандартам специальных возможностей с помощью различных средств сторонних разработчиков.
Если имеется среда разработки, например Microsoft Visual Studio 2005, то в такой среде могут находиться средства для тестирования специальных возможностей. Дополнительные сведения см. в документации по конкретному продукту. Однако средства проверки специальных возможностей во время разработки не тестируют вывод, который генерируется динамически, например разметку, которая отображается серверными элементами управления ASP.NET или пользовательским кодом.Следует протестировать выходные данные страниц в дополнение к использованию специальных средств проверки во время разработки.
С помощью теста специальных возможностей невозможно выполнить полную диагностику специальных возможностей страницы или веб-узла. Для большей части руководств по специальным возможностям необходимо суждение разработчика, чтобы определить, соответствуют ли функциональные возможности страницы руководству. Например, с помощью автоматизированного теста можно определить, все ли изображения страницы снабжены пояснительным текстом alt. Однако с помощью автоматического теста невозможно определить, описывает ли изображение текст alt. Также с помощью автоматического теста невозможно объективно определить, обеспечивают ли цвета на странице достаточную контрастность для читателей, для которых необходим текст с высокой контрастностью. Поэтому чтобы действительно создавать приложения со специальными возможностями, необходимо иметь хорошую осведомленность о специфике и целях руководств, чтобы создавать страницы, соответствующие руководствам по специальным возможностям. Другой пример проверки специальных возможностей, которая может быть выполнена без средств проверки, — текст alt должен существовать только для графических изображений, например для границы таблицы. В противном случае средством чтения с экрана будет прочитан файл изображения. Если текст в теге alt пуст, изображение будет корректно пропущено средством чтения экрана.
Функции специальных возможностей в ASP.NET
Большую часть времени элементы управления ASP.NET либо отображают разметку, которая появляется в страницах, которые соответствуют стандартам специальных возможностей, либо предоставляют свойства, которые можно задать, чтобы создать страницу со специальными возможностями. Однако в некоторых случаях элементы управления ASP.NET отображают результат, не отвечающий всем стандартам специальных возможностей. Подробные сведения см. в разделе Элементы управления ASP.NET и специальные возможности.
Основные функции элемента управления, которые поддерживают специальные возможности
Как правило, элементы управления ASP.NET соответствуют требованиям доступности благодаря следующим особенностям:
Предоставляют способ указания текстового эквивалента для любого элемента, не являющегося текстовым.
Не зависят от цветов.
Отображают надписи и заголовки столбцов таблицы с таблицами.
Отображают элементы fieldset и legend, которые имеют элементы div.
Не требуют таблиц стилей.
Поддерживают позиционирование с помощью свойств стиля.
Связывают метки с элементами управления.
Создают клиентский сценарий, который является аппаратно независимым, например сценарий, который не отвечает только на щелчки мышью.
Доступ с клавиатуры
Важная особенность специальных возможностей состоит в том, что функциональные возможности на странице должны быть доступны для альтернативных форм ввода. На практике это означает, что любая задача, которая может быть выполнена с помощью мыши, может также быть выполнена с помощью клавиатуры.
ASP.NET позволяет включить поддержку клавиатуры для страниц с помощью следующих способов:
Можно задать последовательность переходов для элементов управления с помощью свойства TabIndex.
Можно указать кнопку по умолчанию для формы или элемента управления Panel с помощью установки свойства DefaultButton.
Можно задать фокус на элементах управления ввода с помощью методов, таких как метод SetFocus, или с помощью установки свойства DefaultFocus для формы.
Можно определить ключи доступа для элементов управления «Кнопка» с помощью установки свойства AccessKey.
Можно использовать элементы управления Label с текстовыми полями, которые позволят определить ключи доступа для текстовых полей. Подробные сведения см. в разделе Практическое руководство. Использование серверных веб-элементов управления Label в качестве заголовков.
Изображения и альтернативный текст
В руководстве по специальным возможностям рекомендуется предоставлять осмысленный альтернативный текст для изображений на странице, имеющих функциональное предназначение, например для тех изображений, которые функционируют как кнопки или отображаются элементами управления данными. Это дает возможность средству чтения экрана сообщать о том, что означает каждое изображение на странице. Чтобы изображение, которое не имеет функционального назначения, было пропущено средством чтения экрана, альтернативным текстом должна быть пустая строка.
Поскольку элементы управления Image, ImageButton и ImageMap не могут автоматически создавать осмысленный текст, по умолчанию эти элементы управления не отображают альтернативный текст вообще. Вместо этого необходимо предоставить текст самостоятельно. Средства проверки специальных возможностей отмечают элементы управления без альтернативного текста как нарушающие руководства.
Для проверки элементов управления изображения следует выполнить одно из следующих действий:
Задайте для свойства AlternateText осмысленный текст.
Задать свойству GenerateEmptyAlternateText значение true, чтобы элемент управления ASP.NET Image отображал пустую строку в качестве альтернативного текста. Пустой альтернативный текст интерпретируется средствами поверки специальных возможностей так, что считается, что изображение намеренно отмечено как не представляющее важности.
Элементы управления со встроенными изображениями или ссылками
Некоторые элементы управления, такие как TreeView, Menu и веб-части, отображают изображения или ссылки как часть собственной разметки. В этих случаях элементом управления создается альтернативный текст для каждого изображения или ссылки, которые описывают эту функцию.
Например, элементом управления TreeView отображаются изображения для раскрытия и свертывания кнопок для каждого узла. Элементом управления TreeView создается альтернативный текст для этих изображений в зависимости от текста узла. По умолчанию альтернативный текст для изображения раскрываемого узла с текстом «Пуск» отображается как «Раскрыть Пуск». Можно указать собственный альтернативный текст с помощью установки свойств ExpandImageToolTip и CollapseImageToolTip для элемента управления TreeView.
Таким же образом в команде Меню отображается альтернативный текст для ссылок, которые создаются для раскрытия и свертывания элементов меню. Кнопки в элементе управления веб-частей заголовка окна точно так же отображают альтернативный текст, который описывает функции каждой кнопки.
Пропуск повторяющихся ссылок
Вспомогательные технологические устройства, такие как средства чтения с экрана, должны нумеровать каждую ссылку на странице, чтобы эти ссылки отображались в страницах. Иногда из-за такого меню на главной странице, которая появляется вверху каждой страницы в веб-узле, средство чтения с экрана читает все записи на каждой странице до чтения основного содержимого страницы. Для таких случаев в руководствах по специальным возможностям рекомендуется предоставлять пользователя способ пропустить списки повторяющихся ссылок. Следующими элементами управления реализован пропуск повторяющихся ссылок:
Каждый из этих элементов управления поддерживает свойство SkipLinkText. Если этому свойству должна быть задана строка (которая может включать любой текст), элемент управления отображает привязку перед ссылками, которые включают невидимое GIF-изображение с альтернативным текстом. По умолчанию альтернативный текст имеет значение по умолчанию «Skip Navigation Links», но текст можно задать. Привязка ссылается на другую привязку, которая следует за элементом управления. Это дает возможность средствам чтения экрана и подобным средствам предоставлять пользователям возможность пропускать ссылки, которые созданы элементом управления без видимого перекрытия с отображаемым содержимым страницы. Если свойству SkipLinkText задана пустая строка, элемент управления не отображает теги привязки.
Элементы управления, которые отображают таблицы
В руководствах по специальным возможностям рекомендуется, чтобы в HTML-таблицы входили:
Заголовок, чтобы облегчить идентификацию назначения таблицы для вспомогательных технологий.
Способ идентификации заголовков столбцов.
Если для создания таблицы используется элемент управления Table, можно явно задать свойство этого элемента Caption. Можно создавать заголовки таблицы с помощью класса TableHeaderRow, задав свойству TableSection перечисление TableHeader класса TableRowSection. Это приведет к тому, что таблица будет отображать элемент thead. При создании ячеек с элементом управления TableCell можно задавать каждому свойству AssociatedHeaderCellID для ячейки значение идентификатора ячейки заголовка таблицы. Это приведет к тому, что в ячейке отобразится атрибут header, который свяжет ячейку с заголовком соответствующего столбца.
Следующие серверные элементы управления ASP.NET могут отображать HTML-таблицы:
Эти элементы управления позволяют задавать свойства Caption и CaptionAlign, чтобы создать рекомендованные заголовки для результирующей таблицы.
Если задать свойство UseAccessibleHeader для этих элементов управления, то элемент управления будет отображать элемент th, который имеет атрибуты scope, чтобы идентифицировать заголовки столбцов.
Два дополнительных элемента управления DataList и Repeater не отображают автоматически элементы thead или th. Однако можно определить шаблоны заголовка для этих элементов управления. Для элемента управления DataList шаблоны заголовка отображают элементы th. Элемент управления Repeater не отображает разметку автоматически; следует определить шаблоны заголовка, основной части и нижнего колонтитула для элемента управления, в котором можно указать любую разметку. Если указать, что элемент управления Repeater должен отображать HTML-таблицу, то для соответствия стандартам специальных возможностей следует включить соответствующую разметку.
Элементы управления, которые отображают элементы DIV
В руководствах по специальным возможностям рекомендуется разделять длинные формы на разделы, чтобы сделать навигацию более легкой. В HTML 4.0 представлены элементы fieldset и legend, чтобы позволить разработчикам веб-страниц разделять формы на разделы.
В ASP.NET можно использовать элемент управления Panel, чтобы создавать подразделы в форме. Если для элемента управления задать свойство GroupingText в виде строки, элемент управления Panel отобразит элемент div, который содержит элемент fieldset для содержимого и элемент legend, который содержит строку, которая использовалась в свойстве GroupingText.
Некоторые элементы управления веб-частей также отображают элементы div. Эти элементы управления автоматически отображают элементы fieldset и legend.
Проверяющие элементы управления
На многих веб-страницах, если необходима запись, или пользователь допустил ошибку при вводе данных, возле текстового поля отображается звездочка (*). Поскольку звездочка не является осмысленным знаком, следует всегда указывать осмысленные сообщения об ошибке в свойствах Text и ErrorMessage элементов управления, используемых для проверки.
Кроме этого, проверяющие элементы управления должны отключить клиентский сценарий (EnableClientScript=false).
Элемент управления входа в систему
Элементы управления входа в систему, такие как элементы управления Login, ChangePassword, PasswordRecovery и CreateUserWizard, включают другие элементы управления, такие как Label, TextBox, а также проверяющие элементы управления. Поскольку разработчик веб-страниц не обязательно имеет прямой контроль над тем, что отображают элементы управления входа в систему, элементы управления разработаны с учетом специальных возможностей. Например, элементами управления демонстрируются следующие особенности поддержки специальных возможностей:
Текстовые поля имеют связанные метки.
Элементы управления имеют параметры индекса перехода по клавише TAB.
Однако при создании шаблонов для данных элементов управления входа необходимо настроить элементы управления в шаблонах так, чтобы элементы управления соответствовали руководствам по специальным возможностям.
Клиентский сценарий и серверные элементы управления ASP.NET
В стандартах WCAG рекомендуется, чтобы на страницах не использовались клиентские сценарии для любых целей, а только для несущественных эффектов, например развертывания мышью. Раздел 508 руководства позволяет пользователям использовать клиентский сценарий, если вспомогательные технологии могут работать с любыми значениями, которые возвращаются сценарием.
Некоторые серверные веб-элементы управления ASP.NET зависят от клиентского сценария. Например.
Клиентский сценарий необходим, чтобы выполнять обратные передачи для элементов управления LinkButton и ImageButton.
Клиентский сценарий необходим для элемента управления Calendar для поддержки перехода на ссылки дней.
Для элементов управления веб-частей с помощью клиентского сценария закрываются, свертываются и редактируются ссылки.
Полный список элементов управления, в которых используется клиентский сценарий, см. в разделе Серверные веб-элементы управления ASP.NET, использующие клиентский сценарий.
Поэтому если использовать на странице любой из элементов управления, для которых необходим клиентский сценарий, то данная страница не будет соответствовать стандартам WCAG. Если веб-приложение должно на 100 процентов соответствовать стандартам WCAG, то на странице не должны быть использованы никакие элементы управления, зависящие от клиентских сценариев. Однако эти элементы управления, использующие клиентские сценарии на странице, соответствуют разделу 508 стандартов.