#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 в подходящий момент.