доступность - блокировка фокуса прерывается клавишами со стрелками при использовании JAWS

У меня есть функция, которая блокирует фокус внутри диалога.

<div role="dialog" aria-label="test dialog">
    <input type="text" id="a"/><br />
    <input type="text" id="b"/><br />
    <input type="text" id="c"/><br />
    <input type="text" id="d"/><br />
    <button id="buttonA">a</button>
    <button id="buttonB">b</button>
    <button id="buttonC">c</button>
</div>

При использовании вкладки Tab / Shift все работает нормально, но теперь я начал тестировать свой код с помощью JAWS и вижу, что клавиши со стрелками ведут себя по-разному.

Диалог блокировки чем-то похож на логику этой скрипты: https://jsfiddle.net/zw6w5gx2/

Я попытался добавить коды клавиш стрелок в оператор if, но потом заметил, что событие не запускается для этих клавиш.

Мой диалог имеет role=dialog, и при использовании NVDA этого было достаточно, чтобы клавиши со стрелками вернулись к своему обычному поведению, но это не работает с JAWS.

Я видел, что при использовании role=application все в порядке, но я не хочу использовать эту роль, так как она мне здесь не нужна.

Есть идеи?


person Chen    schedule 02.11.2017    source источник


Ответы (2)


Извините, но то, что вы здесь делаете, является плохой практикой и одновременно перекодированием.
Во-первых, последние версии JAWS имеют встроенную функцию ограничения виртуального курсора текущим диалогом, поэтому нет необходимости повторно -реализовать эту функциональность.
Во-вторых, вы не должны никоим образом ограничивать своего пользователя. Если вы заблокируете фокус программно, для пользователя программы чтения с экрана это будет похоже на воображаемую процедуру, когда после действия вы внезапно сделаете весь свой монитор темным, кроме вашего диалога. Это неприемлемо, поэтому JAWS не дает вам такой возможности.
в-третьих, для того, чтобы добиться вашего эффекта с помощью «нажмите Tab — перейдите к конкретному вводу», вам нужно только указать правильный атрибут tabindex, затем все ваши движения Tab/Shift+Tab будут такими, как ожидалось.
Дело в том, что JAWS на веб-странице работает с вещью, известной как виртуальный курсор. Он позволяет незрячим пользователям перемещаться по странице с помощью быстрых клавиш, а именно букв (h перемещается по заголовку, b по кнопке и так далее и тому подобное). Вот почему вы видите такое странное (на первый взгляд( поведение.
Однако, если вам абсолютно необходимо делать все те вещи, которые вы сейчас делаете (и вы имеете на это право, несмотря на то, что я сказал ранее) , role="application" ваш лучший друг: таким образом пользователь точно будет знать, что его/ее ключи не будут работать так, как он/она ожидает, и это нормально, потому что так сделал разработчик.

person Andre Polykanine    schedule 02.11.2017

Jaws ведет себя по-разному при использовании режима «виртуальный курсор» и режима «приложение». Попробуйте переключаться между режимами с помощью «insert + z», когда в режиме приложения фокус перемещается на вкладку -able элементы, в то время как в челюстях «виртуального курсора» используется структура DOM для фокусировки на следующих / предыдущих элементах. То же самое происходит с другими инструментами специальных возможностей, такими как Экранный диктор, при использовании режима «сканирования» «caps lock + пробел» для включения/отключения.

person fizampou    schedule 04.04.2018