Управление программой чтения с экрана — Заставить программу чтения с экрана читать, когда отрисован определенный элемент

#javascript #accessibility #nvda

#javascript #Специальные возможности #nvda

Вопрос:

Я работаю над простым приложением и хочу, чтобы оно было доступно через программы чтения с экрана.

Проблемная область:

  • Программы чтения с экрана на веб-страницах Фактическое поведение: я вижу, что программа чтения с экрана ожидает полной загрузки страницы (исключая динамически генерируемые элементы), а затем начинает чтение сверху вниз

Чего я ожидаю: я хочу, чтобы программа чтения с экрана начала чтение на основе условия, скажем, после динамического ввода div.

Я перепробовал несколько способов сделать контент доступным, используя методы aria-live, aria-busy, focus().

Мой код выглядит следующим образом:

 <div><h1>NVDA TEST</h1></div>
<iframe src="http://localhost:3000" title="iframe" style="height: 500px; width: 100%;"></iframe>
<footer>
    <span>Hello Company</span>
    <span style="float: right">Terms and conditions Apply</span>
</footer>
 

Я хочу, чтобы описанное выше поведение было реализовано в более крупном приложении.
Заранее благодарю вас.

Комментарии:

1. Мне неясно, что вы пытаетесь здесь сделать. Где вы пытаетесь запустить программу чтения с экрана и почему вы хотите создать поведение, отличное от стандартного? Вы заявили, что «условие», которое вы хотите использовать для влияния на поведение программы чтения с экрана, будет чем-то вроде динамически вводимого div. Это звучит как поведение, для которого aria-live было бы идеально, но вы заявили, что уже пробовали это. Не могли бы вы быть более конкретными?

Ответ №1:

Атрибут, который вы должны использовать, если хотите контролировать, что попадает в (или, скорее, то, что исключается из) дерева доступности aria-hidden .

Вы пробовали обернуть содержимое, которое хотите скрыть aria-hidden="true" , а затем удалить атрибут в тот момент, когда вы хотите раскрыть содержимое?

В какой-то момент будет вызван атрибут html inert , который в какой-то момент будет лучшей практикой для такого рода вещей. Он еще не полностью стандартизирован, но вы можете использовать его с полизаполнением. (Пожалуйста, ознакомьтесь с первым из вариантов использования, упомянутых в связанном документе — я думаю, что это очень близко к тому, что вам нужно).

Комментарии:

1. Я использовал комбинации aria, focus для достижения вышеуказанного поведения, но ожидаемого поведения не было. Большое вам спасибо, что предложили мне использовать атрибут inert, с помощью которого теперь я могу добиться требуемого поведения. Проблема теперь в том, что программа чтения с экрана (программа чтения с экрана должна читать после удаления атрибута inert) не считывает содержимое. Является ли фокус единственным способом заставить программу чтения с экрана читать содержимое??

2. нет, фокус — это не единственный способ. Программа чтения с экрана сможет обрабатывать просматриваемый контент, если она использует стандартную семантику, в частности заголовки, а также списки, абзацы и так далее. Например, NVDA использует «H» для фокусировки следующего заголовка. Если вы добавите tabindex=-1 заголовок для содержимого, которое вставляется динамически, вы можете сфокусировать его с помощью javascript в подходящий момент.