Существует три способа взаимодействия с role = "application".
Нажмите ввод для элемента приложения, выйдите из режима редактирования (или режима форм) и используйте приложение, как если бы это была другая веб-страница.Вы можете поместить туда другие элементы, и программа чтения с экрана будет перемещаться по этим элементам в режиме бровей.
Нажмите клавишу ввода в приложении, которое переводит программу чтения с экрана в режим редактирования, где все ключи передаются виджету редактирования внутри приложения.и вы обрабатываете все в вашем приложении, возможно, при событии keydown.
Управляйте tabindex, когда программа чтения с экрана нажимает клавиши, используя roving tabindex .
У вас сейчас есть 1 и 3, что действительно сбивает с толку.Если вы удалите элемент приложения, он все равно будет работать нормально.Звучит так, как будто вы хотите 2, хотя.2 настоятельно не рекомендуется, если у вас нет программы чтения с экрана, постоянно тестирующей UX или создающей ваше приложение.Номер 2 в основном для игр и считается элементом «холста» для программ чтения с экрана.Вы делаете 2, выполняя следующие действия:
<div role="application">
<input type="button" autoFocus="true" value="Click me" />
<p aria-live="polite" id="spk"></p>
</div>
Элемент spk предназначен для отправки сообщений в программу чтения с экрана, что необходимо сделать в этом интерфейсе Window, Icon, Menu, Message (WIMM).Помните, что в этом режиме вам нужно все программировать, и пользователи расстраиваются, если ожидания не оправдываются.
Вы сказали, что создаете текстовый процессор.Этот последний вариант (номер 2) НЕ предназначен для создания текстового процессора.Как пользователь программы чтения с экрана, у меня есть ожидания и рабочие процессы для текстовых процессоров.Вы не можете получить эту функциональность, программируя ее вручную в Javascript.Вместо этого используйте существующие поля редактирования, которые HTML предоставляет по этой причине, например: Этот пример текстового редактора
Пожалуйста, дайте мне знать, если есть какая-то причина, по которой вы не хотите использовать вышеизложенноеwidget.
Вы могли бы избежать использования 3 вместе с обычными виджетами, но лучше делать то, что делает Google Drive, и разрешать пользователям переходить в режим редактирования при загрузке страницы, или нажимать клавишу, например, escape,чтобы войти в область приложения tabindex (которая не обязательно должна быть в элементе приложения, хотя это может быть).
Редактировать: после прочтения вашего вопроса звучит так, как будто вы не можете понять, каквведите элемент приложения.Вы указываете, где программа чтения с экрана говорит «приложение», и нажимаете ввод.Чтобы выйти, вы либо переходите к следующему элементу tabindex, находящемуся вне приложения, либо нажимаете специальную клавишу для выхода из приложения.В NVDA этой ключевой командой является ctrl + nvda + space.В вашем приложении элемент application является первым элементом.