iziToast — современная JavaScript-библиотека для отображения уведомлений на веб-странице, которая ориентирована на гибкость и удобство в пользовательском интерфейсе. Одним из ключевых аспектов доступности является корректная работа уведомлений со скринридерами, что обеспечивает возможность взаимодействия с контентом пользователям с нарушениями зрения.
Для обеспечения доступности iziToast использует стандартные атрибуты ARIA. Основные из них:
role="alert" — уведомление автоматически сообщается
скринридеру как важное сообщение. Элемент с этим атрибутом будет
прочитан немедленно, без необходимости фокусировки.aria-live="assertive" — аналогично
role="alert", сообщает, что контент должен быть прочитан
как можно быстрее.aria-atomic="true" — гарантирует, что скринридер
озвучит полностью все содержимое уведомления, даже если оно изменяется
динамически.aria-label — позволяет задать текстовое описание
уведомления, если стандартного текста недостаточно для контекста.iziToast автоматически назначает role="alert" для
стандартных уведомлений, что обеспечивает базовую совместимость со всеми
современными скринридерами.
Для пользователей, ориентирующихся на клавиатуру, важна возможность управлять уведомлениями без мыши:
iziToast.show() создаёт уведомление в DOM, но оно
не захватывает фокус. Для уведомлений, требующих взаимодействия
(например, с кнопкой закрытия или подтверждения), рекомендуется
программно перемещать фокус на активные элементы внутри
уведомления.buttons, который создаёт <button> внутри
уведомления. Каждая кнопка доступна для навигации с помощью клавиши
Tab и может быть активирована через Enter или
Space.timeout. Однако уведомления с обязательным взаимодействием
должны иметь timeout: false, чтобы не исчезать до того, как
пользователь сможет их озвучить и прочитать.iziToast.show({
title: 'Успешно',
message: 'Данные сохранены',
position: 'topRight',
timeout: 5000,
buttons: [
['<button>Закрыть</button>', function (instance, toast) {
instance.hide({ transitionOut: 'fadeOut' }, toast);
}]
],
onOpening: function () {
const toastElement = document.querySelector('.iziToast');
toastElement.setAttribute('role', 'alert');
toastElement.setAttribute('aria-live', 'assertive');
toastElement.setAttribute('aria-atomic', 'true');
}
});
В этом примере уведомление озвучивается скринридером сразу после отображения, а кнопка закрытия полностью доступна через клавиатуру.
Когда уведомление обновляет своё содержимое динамически (например,
через update или повторное использование
iziToast.show() для того же ID), важно, чтобы скринридер
корректно считывал изменения. Для этого:
aria-live="polite" для уведомлений с
второстепенной информацией, которая не требует немедленного
озвучивания.aria-atomic="true" гарантирует, что при изменении
текста будет произнесено полное сообщение.aria-label, чтобы обеспечить правильное озвучивание нового
текста.iziToast корректно работает с популярными скринридерами:
Для всех этих систем уведомления с role="alert" и
aria-live="assertive" автоматически озвучиваются, а
интерактивные элементы остаются доступными через клавиатурную
навигацию.
alert,
status) в зависимости от важности сообщения.Правильная настройка iziToast с ARIA-атрибутами, поддержка клавиатурной навигации и управление динамическим контентом позволяют создавать полностью доступные уведомления. Это обеспечивает корректное взаимодействие с пользователями, использующими скринридеры, и соответствует современным стандартам веб-доступности.