DOM и React Senior DOM на практике обновлено

Объявление для скринридера

Условие

makeAnnouncer(container): возвращает announce(text). Создаёт один узел с role="status" и aria-live="polite" и меняет его текст. Повторное объявление того же текста тоже должно быть услышано.

Что проверяют тесты

  • создаёт живую область

  • объявляет текст

  • повтор того же текста меняет содержимое

  • узел один на всех

Как подойти

aria-live - единственный способ сообщить незрячему пользователю о том, что произошло без его участия: товар добавлен в корзину, форма сохранена, найдено N результатов. Два правила, которые нарушают чаще всего: узел создаётся заранее и никогда не пересоздаётся, а повторный одинаковый текст надо сделать отличающимся (невидимый символ или сброс через пустую строку). polite ждёт паузы, assertive перебивает - второе только для ошибок.

Подсказки: 2
  1. Живая область должна существовать в документе заранее - вставленная вместе с текстом не прочитается.
  2. Скринридер реагирует на изменение содержимого; одинаковый текст подряд изменением не считается.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.