Мне нужна роль = "button" на кнопке <button>?

Я заметил во всех примерах Bootstrap, используя элементы button, они включают role="button"type="button"), например:

<div class="dropdown">
    <button id="dLabel" type="button" role="button" data-toggle="dropdown" 
     aria-haspopup="true" aria-expanded="false">
        Dropdown trigger <span class="caret"></span>
    </button>
    <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
    ...
    </ul>
</div>

Не будет ли программное обеспечение доступности уже знать, что элемент button должен действовать как кнопка? Есть ли какая-то причина, по которой я должен включать role="button" и/или type="button" в свой код?

Ответ 1

Многие элементы HTML5 имеют неявную семантику ARIA по умолчанию и явно устанавливают эти значения по умолчанию: " ненужно и не рекомендуется.

Глядя на элемент button, вы можете видеть, что он имеет button роль по умолчанию.

Итак, установка role="button" "не рекомендуется", но разрешена. Это может помочь более старым пользовательским агентам, поддерживающим WAI-ARIA, но не HTML5.

Ответ 2

TL; DR Для данного случая необходимо указать role=button, потому что он ведет себя как кнопка переключения. type=button также следует использовать.

Все кнопки Bootstrap не используют кнопку role =

Информация в вопросе о том, что все кнопки в примерах Bootstrap используют role=button, неверна. Только кнопки, которые логически ведут себя как кнопки переключения, обозначаются как таковые.

Использование кнопки role = на элементе кнопки

Вам вообще не нужно использовать role=button, поскольку элементы кнопки имеют сильную родную семантику. Кроме того, согласно примечанию об использовании ARIA Использование WAI-ARIA в HTML:

Функция языка HTML: кнопка

Сеантика по умолчанию ARIA: role = button

Если авторы явно определяют семантику по умолчанию ARIA? НЕТ (примечание 0a)

Примечание 0a: YES Если атрибут, нажатый на арию, используется на элементе кнопки

Итак, вы должны установить роль для кнопок переключения, но не иначе.

Использование кнопки type = на кнопке

Так как в вопросе также упоминается type=button, я уточню. Согласно разделу на кнопках в спецификации W3C HTML5, отсутствующее значение по умолчанию для типа элементов кнопки type=submit, поведение активации которого отправьте владельцу формы, если он есть. Не существует активационного поведения, связанного с type=button.

Следовательно, для указанного случая необходимо указать type=button.

Ответ 3

Тег <button> может быть одним из трех:

  • Регулярная кнопка, которая делает то, что вы указываете при нажатии (type = button).
  • Кнопка отправки, которая отправляет форму при нажатии (type = submit).
  • Кнопка reset, которая сбрасывает форму до ее внутренних значений при нажатии (type = reset).

Хорошо указать, какой тип вы собираетесь использовать, потому что разные браузеры используют разные значения по умолчанию для кнопок.

http://www.w3schools.com/tags/att_button_type.asp

Роль не обязательно должна быть включена, но она хороша для программного обеспечения accessibilty.

Итак, вы должны их включить? Нет, вы этого не делаете, но обычно это целесообразно.

Ответ 4

Здесь скажите:

Примечание. По возможности рекомендуется использовать собственные кнопки HTML (, и), а не роль кнопки, так как собственные HTML-кнопки более широко поддерживаются более старыми пользовательскими агентами и вспомогательными технологиями. Встроенные кнопки HTML также поддерживают требования клавиатуры и фокуса по умолчанию, без дополнительной настройки.

Возможные последствия для пользовательских агентов и вспомогательных технологий

Когда используется роль кнопки, пользовательские агенты должны выставлять элемент в качестве элемента управления кнопки в API доступности операционной системы. Считыватели экрана должны объявить элемент как кнопку и описать его доступное имя. Программное обеспечение распознавания речи должно позволить кнопке активироваться, произнеся "click", а затем доступное имя кнопки. Примечание. Мнения могут отличаться от того, как вспомогательные технологии должны обрабатывать эту технику. Представленная выше информация является одним из таких мнений и поэтому не является нормативной.

Затем вы должны добавить его. Чтобы выставить его пользователю. Но не является нормативным.

Ответ 5

Согласно W3C Html5 Button

Недопустимое значение по умолчанию - это состояние кнопки "Отправить".

Если атрибут type находится в состоянии кнопки отправки, элемент представляет собой кнопку отправки.

Если вы не собираетесь использовать кнопки для отправки формы, вам нужно явно установить type="button" как опустить это, как указано в спецификации W3C, она будет действовать как кнопка отправки, будет отправлять вашу форму. Чтобы избежать ненужных отправлений, вам необходимо явно установить type="button" на <button> s.

Поскольку большинство кнопок бутстрапа предназначены для запуска функции javascript или подобного поведения, чтобы избежать случайного непреднамеренного представления поведения при копировании кода и вставке с именем нормализации с хорошей практикой, добавляются атрибуты type="button" и role="button" до <button>

Ответ 6

Роль = "button"

Это не обязательно для Bootstrap

Ответ 7

Требования и рекомендации теперь намного более подробно описаны в "ARIA в HTML"

В следующей таблице приведены нормативные требования соответствия документов для каждого элемента для использования разметки ARIA в документах HTML и описывается неявная семантика ARIA, которая применяется к элементам HTML, как определено в спецификации сопоставлений HTML Accessibility API Mappings 1.0 [html-aam-1.0].

https://w3c.github.io/html-aria/#document-conformance-requirements-for-use-of-aria-attributes-in-html