Я использую программу чтения с экрана Chrome Vox для своего мобильного приложения. Этот ридер читает все теги диапазона ошибок, которые имеют role="alert"
, я хочу, чтобы скринридер читал только первую ошибку (role='alert'). Например, мы можем увидеть страницу регистрации учетной записи Gmail. Как я могу достичь этого сценария?
Как остановить программу чтения с экрана для чтения всех тегов диапазона ошибок, у которых есть роль = предупреждение?
Ответы (2)
Если вы ставите промежутки рядом с каждым вводом при ошибке, у них не должно быть роли = предупреждение, а скорее идентификаторы. Тогда входные данные хотели бы иметь aria-describedby= этот идентификатор. Возможно, вы захотите иметь предупреждение о сообщении, в котором говорится, что были ошибки, и либо сосредоточиться на нем, либо сосредоточиться на первом вводе, связанном с ошибкой, выбрать и т. д.
Если вам нужно окно с ошибкой в верхней части формы и вам нужна сводка, вы можете сосредоточиться там на ошибке и составить список с якорями (текст, объясняющий ошибку), указывающий на входные данные. Для этого не нужна роль оповещения.
Если вы просто хотите предупредить пользователей об ошибках, вы можете поместить фразу, говорящую об этом, в контейнер с role=alert и aria-live=assertive, а затем сосредоточиться на первой ошибке ввода.
Мне пришлось решить ту же проблему, и лучшим решением было вообще не использовать role=alert
для сообщений об ошибках. Вместо этого используйте aria-describedby
для элементов, которые можно проверить, и укажите его на диапазон, содержащий сообщение об ошибке.
Это гарантирует, что сообщение об ошибке для элемента в фокусе будет прочитано.
Этот подход более удобен для пользователя по сравнению с предупреждениями, поскольку сообщения об ошибках не считываются сразу (как описано в вопросе), что может сбивать с толку. Вместо этого сообщение об ошибке элемента, находящегося в фокусе, считывается при навигации по странице.
Пример:
<div>
<input type="text"
name="username"
id="username"
aria-describedby="username_error"
aria-invalid="true"/>
<span class="error" id="username_error">Username is unknown</span>
</div>
Еще несколько советов:
- Получите подсказку программе чтения с экрана о том, что элемент содержит ошибки, установив атрибут
aria-invalid=true
- ARIA 1.1 определяет атрибут aria-errormessage, который можно использовать вместо
aria-describedby
, как только он будет широко принят