Как программно отключить виртуальный курсор J AWS? - PullRequest
1 голос
/ 27 мая 2020

У меня есть динамический c текст «n результатов найдено», когда вы что-то ищете в моем приложении. И у меня есть aria-atomic="true" и aria-live="assertive" в этом элементе, как показано ниже:

<p aria-atomic="true" aria-live="assertive">n results found</p>

На озвучке Ma c сообщение произносится правильно без каких-либо проблем. Но на Windows с программным обеспечением J AWS сообщение не произносится. Я заметил, что если я отключу виртуальный курсор с помощью сочетания клавиш «Insert + Z», строка aria-live будет произноситься правильно.

Я не хочу, чтобы пользователь нажимал Insert + Z, чтобы сделать эта работа. Есть ли способ программно отключить виртуальный курсор? Или есть какой-либо другой способ решения этой проблемы?

Любая помощь действительно приветствуется.

PS: Я пробовал несколько других комбинаций, таких как использование role="status", role="alert" с aria-live="polite", aria-atomic="true". Все это работает с озвучкой Ma c и когда виртуальный курсор отключен на windows с помощью J AWS.

Ответы [ 2 ]

0 голосов
/ 28 мая 2020

Оказывается, в J AWS есть довольно жесткие правила атрибутов для этой работы. В конце концов я заставил это работать с одним из следующих атрибутов:

<p aria-live="assertive">n results found</p>

<p aria-live="polite">n results found</p>

Следующие комбинации не работали с J AWS без отключения виртуального курсора:

1. role="alert" aria-live="assertive"
2. role="alert" aria-live="assertive" aria-atomic="true"
3. aria-live="assertive" aria-atomic="true"
4. role="status" aria-live="assertive" aria-atomic="true"
5. role="status" aria-live="polite"
6. role="status" aria-live="assertive"
7. role="status" aria-live="polite" aria-atomic="true"

Я знаю это role="alert" с aria-live="assertive" является избыточным, поскольку aria-live="assertive" неявно добавляет предупреждение о роли при использовании. Но я попробовал это в качестве эксперимента, поэтому упомянул об этом выше.

Все вышеперечисленное отлично работало с озвучкой Ma c.

0 голосов
/ 27 мая 2020

Короткий ответ

Короткий ответ - нет, вы не можете отключить виртуальный курсор из браузера. Есть комбинации атрибутов и коды, которые работают лучше других в отношении живых регионов. Сделайте поиск, вы должны их найти. Многие люди уже писали на эту тему.

Сделайте свой код максимально стандартизированным: используйте ARIA, уважайте WCAG и т. Д. c. вместо использования сложных или проприетарных решений. В конечном итоге это намного лучше для большинства пользователей и для обслуживания вашего собственного приложения.

Более длинный ответ

Ради чистой технической культуры более длинный ответ - да, это возможность запуска сценариев J aws из внешней программы. Есть два решения:

  1. Вызов API J aws FSAPI) напрямую, используя ActiveX или COM-клиент. ProgID "freedomsci.JawsApi", методы BOOL RunScript(BSTR) и BOOL RunFunction(BSTR).
  2. Используйте специализированную библиотеку, которая будет вызывать FSAPI за вас. Я являюсь автором DLL под названием UniversalSpeech, которая делает именно это.

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

Было бы очень сложно объяснить, зачем вам нужен доступ к нему, верно? Поэтому, конечно, вам настоятельно рекомендуется держаться подальше от этого.

Однако может быть исключение, где возможны два вышеуказанных решения. Если вы запускаете настольное приложение во встроенном браузере, таком как Elektron, NW JS, ... Но даже в этом более позднем случае я настоятельно рекомендую не делать этого, если у вас нет особых и точных потребностей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...