Как роль = форма помогает доступности?
Я читал, что атрибут role
был добавлен в Bootstrap для доступности, и я хотел бы знать, как <form role="form">
обеспечивает доступность. См. http://getbootstrap.com/css/#forms-example для примера этого конкретного использования.
I выполнил поиск Bootstrap-репо для "роли" безрезультатно.
Моя проблема в том, что информация кажется излишней. Понятие о том, что элемент является формой, уже выражено самим тегом HTML (<form>
), так что это помогает, если мы также добавим, что элемент воспроизводит role
из form
? Было бы целесообразно добавить role="..."
, если role
будет отличаться от form
(я не знаю, что - но пусть притворяется); (особенно без конкретных аргументов/примеров использования), это в лучшем случае озадачивает.
Ответы
Ответ 1
Если вы добавите role="form"
в форму, программа чтения с экрана увидит ее как регион на веб-странице. Это означает, что пользователь может легко перейти к форме с помощью своих быстрых навигационных клавиш (например, в JAWS 15 для этого используется R). Кроме того, ваш пользователь сможет легко найти, где форма начинается и заканчивается, потому что скрин-ридеры отмечают начало и конец регионов.
Ответ 2
Семантически говоря, форма по умолчанию является, ну, формой. Однако не все приложения доступности (программы чтения с экрана и т.д.) Разрабатываются одинаково, а некоторые могут использовать элементы (даже элемент формы) с атрибутом role=form
по-разному, даже если они понимают, что элемент родительской формы будет иметь одинаковое семантическое значение с или без атрибута role=form
.
Ответ 3
Я хотел бы указать, что статья @user664833, упомянутая в comment, гласит, что role="form"
не следует включать <form>
элементы, а скорее на <div>
или какой-либо другой элемент, который семантически не указывает, что он содержит элементы формы.
Элемент <form>
, вероятно, уже обрабатывается надлежащим образом современными программами чтения с экрана.
Цитата (ссылка):
Рекомендуем использовать [ role="form"
] для семантически нейтрального элемента, такого как <div>
не для элемента <form>
, поскольку у элемента уже есть семантика ролей по умолчанию.
Ответ 4
В самом деле, в Рекомендации ARIA четко указано, что семантика языка хоста не должна изменяться в разделе 1.4:
"Не рекомендуется создавать объекты со стилем и script, когда язык хоста предоставляет семантический элемент для этого типа объекты. Хотя WAI-ARIA может улучшить доступность этих объекты, доступность лучше всего обеспечивается, позволяя пользовательскому агенту обрабатывать объект изначально. Например, лучше использовать h1 элемент в HTML, чем использовать роль заголовка в элементе div."
Итак, запись <form role='form'>
не только лишняя, но и рекомендация. Side [d] эффекты, подобные одному из упомянутых результатов, не соответствуют рекомендации.