Почему aria-live молчит
Вопрос
После отправки формы код вставляет в страницу блок с aria-live="polite" и сразу с текстом ошибки. Скринридер ничего не зачитывает. Почему?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Варианты ответа
politeникогда не зачитывается автоматически, для ошибок нужен толькоassertivearia-liveработает только на полях<input>и<textarea>, а не на блоках- Живая область должна быть в DOM заранее: читаются изменения уже существующейправильный ответ
- Ошибки нужно показывать через
alert(), иначе скринридер их вообще не видит
Разбор
Скринридер отслеживает изменения в живых областях, которые уже есть в дереве доступности. Если область появилась вместе с текстом, изменения внутри неё не было, и многие скринридеры промолчат. Правильно: держать пустой контейнер с aria-live и менять в нём текст. polite зачитывается, просто после текущей фразы; к <input> атрибут не привязан; alert() не нужен.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
aria-hidden против display: none
Следующий вопрос
Минимальный контраст текста по WCAG AA