javascript — как предотвратить фокусировку программы чтения с экрана (не относящуюся к фокусу клавиатуры) из предопределенной области (например, модальной)

Как предотвратить фокусировку программы чтения с экрана (не относящуюся к фокусу клавиатуры) из предопределенной области (например, модальной)

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

Как вы также заметили, курсор обзора фактически полностью независим от системного фокуса. Дерево доступности определяет, чего можно достичь при использовании курсора просмотра программы чтения с экрана.

Чтобы временно ограничить элементы, видимые курсором обзора, вы должны использовать атрибут aria-modal. Поместите это в корневой элемент, который должен быть достижимым. Все внутри останется достижимым. Все остальное снаружи больше не будет доступно, пока атрибут остается на элементе.

Не играйте со скрытой арией, чтобы получить тот же эффект. Некоторые программы чтения с экрана имеют проблемы с вложенными элементами, имеющими скрытый атрибут aria. Например, если внешний элемент имеет aria-hidden = true, а внутренний элемент имеет aria-hidden = false, Jaws не будет отображать внутренний элемент.

Ограничение курсора обзора с помощью aria-modal, а также, кстати, скрытие элементов с помощью aria-hidden, автоматически не означает, что они не могут быть сфокусированы с помощью обычного системного фокуса (Tab / Shift Tab). Поэтому вы обычно удваиваете арио-модальное ограничение с ловушкой фокуса, чтобы предотвратить попадание фокуса системы туда, где это не ожидается. Если вы этого не сделаете, вы можете создать проблемы для пользователей программы чтения с экрана (что должна делать программа чтения с экрана, если в данный момент фокус находится на элементе, скрытом от дерева доступности?). Это периодический недосмотр.

Самый безопасный способ сделать фокус-ловушку — это поймать вкладку на последнем разрешенном элементе и shift tab на первом, и соответственно. вернуть фокус на первый или последний разрешенный элемент. Это гораздо проще, чем установить для всех фокусируемых элементов значение tabindex = -1, а затем вернуться к tabindex = 0, и, как я уже проверял, это работает практически везде.

Понравилась статья? Поделиться с друзьями:
JavaScript & TypeScript
Adblock
detector