2014-02-20 5 views
61

Я читал, что атрибут role был добавлен в Bootstrap для доступа, и я хотел бы знать, как <form role="form"> помогает в доступности. См. http://getbootstrap.com/css/#forms-example для примера этого конкретного использования.Как роль = форма помогает доступности?

I searched Bootstrap's repo for "role" не напрасно.

Моя проблема заключается в том, что информация кажется излишней. Понятие о том, что элемент является формой , уже выражено самим тегом HTML (<form>), так что это помогает, если мы также добавим, что элемент играет role из form? Было бы целесообразно добавить role="...", если role будет отличаться от form (я не знаю, что - но давайте притворимся); (особенно без конкретных аргументов/примеров использования), в лучшем случае это озадачивает.

+0

11 месяцев на, версия Bootstrap только что выпустил (v3 .3.2) удалил много экземпляров формы «role =». Вот запрос на перенос: https://github.com/twbs/bootstrap/pull/15125 –

ответ

75

Если вы добавите role="form" к форме, программа чтения с экрана увидит ее как регион на веб-странице. Это означает, что пользователь может легко перейти к форме с помощью своих быстрых навигационных клавиш (например, в JAWS 15 для этого используется R). Кроме того, ваш пользователь сможет легко найти, где форма начинается и заканчивается, потому что читатели экрана отмечают начало и конец регионов.

+3

Зачем такая программа (JAWS 15) не перейдите в тег '

' с * 'R' * - почему он переходит только к' form' ** role **? – user664833

+6

Поскольку ключ * R * предназначен для перемещения по регионам ARIA (например, статьи, навигационные элементы, информация о содержании и т. д.). Вот почему у вас есть только рег если вы отметите его атрибутом 'role'. Тогда ваш экранный ридер скажет: «Страница содержит заголовки X, Y-ссылки и Z-области». –

+3

Благодарим за упоминание ARIA (доступное Rich Internet Applications). [Эта страница и встроенное видео] (http://blog.paciellogroup.com/2013/02/using-wai-aria-landmarks-2013/) помогли мне получить оценку [атрибута role] (http://www.w3.org/TR/role-attribute/). Теперь я понимаю, что 'role' определяет * ориентирные регионы ARIA *. Пользователи JAWS используют определенные ключи для перехода от одного ориентира к следующему, и когда ориентир достигнут, JAWS объявляет цель ориентира (например, «знамя баннера», «ориентир поиска», «ориентир навигации», «главная достопримечательность»), тем самым помогая людям с ослабленным зрением. – user664833

3

Семантически говоря, форма по умолчанию - это форма. Однако не все приложения доступности (программы чтения с экрана и т. Д.) Разработаны одинаково, а некоторые могут использовать элементы (даже элемент формы) с атрибутом role=form по-разному, даже если они понимают, что элемент родительской формы будет иметь одинаковое семантическое значение с или без атрибут role=form.

+4

Это кажется довольно абстрактным. Можете ли вы указать на какие-либо конкретные примеры, чтобы я мог оценить это различие? – user664833

+3

Я думаю, что @salmanxk означает, что на странице может быть несколько форм, но только одна форма - это реальная форма. Пример: на странице «Контакты» обычно есть форма для заполнения: эта форма будет иметь роль = «форма». Однако на каждой странице также может быть форма поиска в навигационной панели и/или форме join-our-mail-list. Навигационная форма может иметь role = "search", и список почты может иметь role = "join". Каждая форма имеет разную роль, и тег роли помогает определить, что это за роль. –

4

Я хотел бы отметить, что упомянутый в статье comment @ user664833 утверждает, что role="form" не должны идти на <form> элементов, а на <div> или какой-либо другой элемент, который не семантически указывает, что он содержит элементы формы.

<form> элемента, вероятно, уже обрабатывается должным образом современными читателями экрана.

Quote (link):

Рекомендуется использовать [role="form"] на семантически нейтральным элементом, таким как <div> не на <form> элемент, как элемент уже имеет роль по умолчанию семантика подвергается.

+0

Согласен. У меня были проблемы с формой Desmond

3

В самом деле, ARIA Рекомендация государство четко следует не менять язык хоста semmantics в разделе 1.4:

«Это не подходит для создания объектов со стилем и сценарием, когда языка хоста обеспечивает семантический элемент для этого типа объектов . Хотя WAI-ARIA может улучшить доступность этих объектов , доступность лучше всего обеспечивается, если пользовательский агент обрабатывает объект изначально. Например, лучше использовать элемент h1 в HTML, чем использовать headi ng в элементе div."

Таким образом, написание <form role='form'> не только излишним, но против этой рекомендации. Сторона [d] эффекты, как один выше результата от неповиновение рекомендации.