доступность - aria-haspopup menu - интерактивные элементы кроме menuitem в меню

Постановка проблемы и существующее понимание

У меня есть всплывающее окно, которое содержит различный контент, разделенный на разделы, и запускается при нажатии кнопки. Я пытаюсь раскрыть соответствующую семантику доступности / арии в этой реализации. (Это не модальный диалог, а простое всплывающее окно). Согласно моему текущему исследованию, это то, что я думаю, имеет смысл:

  • aria-expanded на кнопке триггера
  • aria-haspopup="menu" на кнопке триггера
  • role="menu" во всплывающем окне
  • role="menuitem" на содержании во всплывающем окне
  • другие дополнительные возможности клавиатуры

Примеры:

как это выглядит в твиттере

реализация кода

Стандарт WAI ARIA определяет фактический виджет role = menu, но он специфичен для меню, подобного приложениям, которое запускает действия или функции. Меню ARIA могут содержать только пункты меню, пункты меню флажков, пункты меню радиокнопок, группы радиокнопок и подменю.

С другой стороны, выпадающие списки Bootstrap носят общий характер и применимы к различным ситуациям и структурам разметки. Например, можно создавать раскрывающиеся списки, содержащие дополнительные входные данные и элементы управления формами, такие как поля поиска или формы входа в систему. По этой причине Bootstrap не ожидает (и не добавляет автоматически) каких-либо атрибутов role и aria-, необходимых для истинных меню ARIA. Авторы должны сами включить эти более конкретные атрибуты.

Моя проблема похожа, но мне нужна помощь в выборе ролей в меню.

Требование:

Вот как выглядит мое всплывающее меню:

мое требование

  • есть 2 секции, разделенные перегородкой
  • в первом разделе есть некоторая информация и некоторые интерактивные элементы
  • во втором разделе есть ссылки
  • для второго раздела я очень доволен использованием роли menuitem на каждом из них
  • Я не совсем уверен в том, как обрабатывать первый раздел, хотя
  • As per current understanding:
    • anything wihtout the menuitem role inside a menu, is ignored for creating the accessibility tree
    • семантика всех дочерних элементов menuitem удалена. Таким образом, button внутри menuitem не будет объявлен как таковой.
  • Как и в случае с реализацией twitter, я могу игнорировать свои неинтерактивные элементы в первом разделе, НЕ добавляя к ним роль menuitem, но что мне делать с интерактивными элементами. Например, для элемента Funds я не могу добавить role="menuitem" ко всему контейнеру, потому что тогда кнопка Add Funds не будет работать для пользователей программ чтения с экрана (?).
  • Я могу добавить role="menuitem" к кнопке и обязательно добавить лучшую метку aria, которая объявляет текущие средства, а также позволяет пользователю нажимать кнопку для добавления средств, но я не совсем уверен в этом.

Вопросов:

  • Существуют ли какие-либо другие семантики ролей / доступности ARIA, которые следует применять в этом случае? Является ли этот вариант использования меню, которое подходит под определение role = menu?
  • Если role = menu и role = menuitem наиболее подходят для этой настройки, что мне делать с интерактивными элементами в первом разделе моего компонента?
  • Если мое требование не подходит ни для одной из ролей всплывающих окон, можно ли не раскрывать это с помощью aria-haspopup и только с расширенным aria?

Другие источники:


person gaurav5430    schedule 30.05.2021    source источник


Ответы (1)


Я сам пользуюсь программами чтения с экрана, и по опыту, роли ARIA, связанные с меню, обычно неуместны, что приводит к трудностям при использовании страницы. Поэтому мой лучший совет - не использовать его в такой сложной настройке. Использование расширенной арии, вероятно, является наиболее разумным и, безусловно, достаточным.

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

Если вы добавите более сложные элементы в свое меню, появятся следующие вопросы, ответ на которые совсем не очевиден:

  • Нужно ли мне нажимать клавишу ВВОД, чтобы активировать текстовое поле внутри меню, прежде чем начинать вводить его?
  • Нужно ли мне нажимать вкладку, чтобы перейти к кнопке или ссылке внутри элемента? А текстовое поле или выбор?
  • Как мне открывать и закрывать выбор внутри меню, не активируя текущий выбор? Мало кто знает Alt + стрелка вниз / вверх, и гораздо меньше людей используют их в своих веб-компонентах.

Добавление более сложных элементов в меню давало ленты в Office 2007+ и Windows 8+. Это кошмар для использования с программой чтения с экрана. Вы никогда не знаете, нужно ли вам нажимать Enter, Tab или просто использовать клавиши со стрелками, чтобы достичь того, что вы хотите. Поэтому, пожалуйста, не воспроизводите это в Интернете.

person QuentinC    schedule 31.05.2021