Как роль = форма помогает доступности?

Я читал, что атрибут 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] эффекты, подобные одному из упомянутых результатов, не соответствуют рекомендации.