Проблема доступности при ошибке и при ее устранении - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть компонент, называемый angular, и я использую aria-live, как показано ниже.

<div aria-live="polite">
<error-component></error-component>
</div>

Эта ошибка отображается при фокусировке вне поля ввода. Теперь При первом появлении ошибки программа чтения с экрана считывает ошибку. Теперь я переместил фокус обратно на поле ввода и, не внося никаких изменений, вымываю поле. Так что та же самая ошибка не зачитывается на этот раз программой чтения с экрана. Я попробовал это, используя релевантный арии, но это не решило проблему. Также мой другой вопрос, предположим, что пользователь вводит правильное значение, а затем ошибка удаляется. Должна ли программа чтения с экрана сообщать пользователю, что конкретная ошибка устранена?

Ответы [ 2 ]

0 голосов
/ 07 ноября 2018

Для вашего первого вопроса, это довольно распространенное поведение, хотя и не универсальное, когда регионы aria-live не читаются снова, если в строке добавляется / устанавливается дважды один и тот же текст, независимо от использования aria-live = polite или ария-живая = напористая. Иногда возможно обмануть это поведение, очистив и затем сбросив текст обратно, но это не всегда работает.

Во всем мире это то, против чего вы не можете пойти. Новый текст всегда гарантированно читается, только если он отличается от текущего текста.

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

Для вашего второго вопроса вы можете использовать относящиеся к арии, чтобы уведомления об удалении также были уведомлены. Однако это не лучшее решение. Прежде всего потому, что релевантный aria не всегда хорошо поддерживается определенными комбинациями браузера и программы чтения с экрана. Но что еще более важно, потому что у вас есть гораздо более надежное и более одобренное пользователем решение для этого конкретного случая.

В случае, если вы знаете, когда в поле больше нет ошибок, используйте aria-invalid . Устанавливайте его, когда поле становится недействительным, оставляйте его установленным до тех пор, пока поле заполнено неправильно, и в идеале удалите атрибут, как только ввод снова станет правильным. Многие программы чтения с экрана немедленно сообщают об изменении между действительным и недействительным или, в худшем случае, о недействительности объявляются каждый раз, когда поле фокусируется.

Единственное, с чем вам следует быть осторожным при использовании aria-invalid, следует избегать установки поля в качестве недействительного, если пользователь еще ничего не вводил или просто просматривал его, не изменяя начальное значение. То же самое предостережение, что вам следует избегать помещения поля красным цветом непосредственно при загрузке страницы.

Добавлена ​​точность: aria-invalid позволяет только сказать, что поле недопустимо, но не позволяет установить сообщение. Для этого вы можете продолжать использовать отдельный регион арии, или вы можете использовать aria-описанный. Преимущество описанного aria заключается в том, что сообщение может повторяться по требованию, но оно может применяться только к конкретному полю (не используйте для ошибок, касающихся всей формы в целом, или для ошибок, которые подразумевают одновременное использование нескольких полей).

0 голосов
/ 06 ноября 2018

Это может не изменить ваш результат, но возможные параметры aria-live: off, polite или assertive, а не true

Простые живые регионы

Обычно используется только aria-live = "вежливый". Любой регион, который получает обновления, которые важны для пользователя, но не такие быстрые как надоедать, должен получить этот атрибут. Программа чтения с экрана будет говорить изменения, когда пользователь бездействует.

<div aria-live="polite">
<error-component></error-component>
</div>

Нет конкретного требования информировать пользователя о том, что ошибка исправлена, но, вероятно, это хорошо.

РЕДАКТИРОВАТЬ: я вижу, что вы редактировали свой код, который был <div aria-live="true"> с момента моего ответа

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