Ниже представлена фиктивная реализация нашего веб-приложения https://roleapplication.herokuapp.com/index.html а>
Элемент appArea имеет ролевое приложение, поскольку он содержит очень сложные виджеты, такие как ms paint / editor / ms office. Навигатор содержит стандартные веб-виджеты, такие как раскрывающийся список и кнопки.
HTML-код похож на указанный ниже.
<body>
<div class="appArea" role="application">
.......//Complex widgets
</div>
<div class="toolbar">
......//Buttons, dropdowns
</div>
</body>
Функциональность клавиатуры appArea обрабатывается ее кодом, а для панели инструментов мы полагаемся на обработку клавиатуры с помощью программы чтения с экрана, поскольку они работают в веб-браузере.
Проблема. Когда пользователь нажимает escape в области навигатора, мы размываем навигатор, поэтому по умолчанию фокус переходит на тело. Теперь, когда фокус находится в теле, клавиши со стрелками перемещают фокус на панель инструментов, и поэтому пользователь никогда не сможет войти в appArea. Если фокус находится в appArea, все работает нормально.
Ожидание - когда фокус находится на теле, то при нажатии стрелки вниз фокус должен находиться внутри appArea, а затем appArea получит ключ вместо программы чтения с экрана.
Проверьте работу клавиши со стрелкой вниз при загрузке страницы с программой чтения с экрана и без нее.
Заметки на клавиатуре
- Нажмите f6, чтобы перейти от виджета 1 к виджету 2 и навигатору.
- Для навигации в виджетах можно использовать клавиши со стрелками / табуляцией.
- Перейдите к навигатору с помощью f6 и нажмите вкладку, чтобы перейти к любой кнопке, а затем нажмите escape. Теперь основное внимание уделяется телу (проверьте с помощью document.activeElement).
- Без программы чтения с экрана наши виджеты захватывают ключ на теле и обрабатывают его, даже если у них нет фокуса.
- Однако с помощью средства чтения с экрана, когда тело имеет фокус и пользователь нажимает стрелку вниз, средство чтения с экрана потребляет ключ и перемещает фокус в навигатор вместо области приложения, в которой есть виджеты, и пользователь не может перейти в appArea с помощью клавиш со стрелками или других клавиш, которые используются для чтения с экрана. потреблять.
Примечание -
- Если мы передадим ролевое приложение для завершения приложения, то обработка клавиш со стрелками по умолчанию для навигатора перестанет работать, что нежелательно.
- Удаление ролевого приложения невозможно, так как appArea довольно сложна с сотнями виджетов, каждый из которых управляется клавиатурой.