Driver.js — это библиотека для создания интерактивных пошаговых туров по интерфейсу веб-приложений. Одним из важных аспектов является доступность (accessibility), особенно поддержка пользователей со зрительными ограничениями с помощью скринридеров.
Для обеспечения корректного озвучивания шагов необходимо использовать ARIA-атрибуты:
role="dialog" — указывает, что всплывающий элемент
является диалоговым окном.aria-modal="true" — блокирует взаимодействие с
остальной страницей, концентрируя внимание на активном шаге.aria-labelledby — ссылается на заголовок шага, который
должен быть озвучен первым.aria-describedby — ссылается на описание шага, которое
предоставляется пользователю после заголовка.Пример создания шага с использованием ARIA:
const driver = new Driver();
driver.defineSteps([
{
element: '#submit-button',
popover: {
title: 'Кнопка отправки',
description: 'Нажмите эту кнопку, чтобы отправить форму',
position: 'bottom'
},
onNext: () => console.log('Следующий шаг')
}
]);
driver.start();
При правильной конфигурации Driver.js автоматически добавляет popover с нужными атрибутами и управляет фокусом.
Фокусировка на активном элементе является ключевым моментом для скринридеров:
setFocus внутри
конфигурации шага, позволяющий вручную управлять фокусом:driver.defineSteps([
{
element: '#menu-item',
popover: { title: 'Меню', description: 'Выберите пункт меню' },
onShow: (element) => element.focus()
}
]);
Для корректного озвучивания текста:
<h1>-<h6>) и описаний
(<p>), которые будут правильно обрабатываться.aria-live для
интерактивного контента:const liveRegion = document.createElement('div');
liveRegion.setAttribute('aria-live', 'polite');
liveRegion.setAttribute('aria-atomic', 'true');
document.body.appendChild(liveRegion);
driver.on('next', (step) => {
liveRegion.textContent = step.popover.description;
});
Driver.js поддерживает клавиатурное управление:
Важно, чтобы логика клавиатурной навигации соответствовала естественной последовательности интерфейса, иначе скринридер может озвучивать контент в неправильном порядке.
Для полной доступности необходимо проводить тестирование с различными скринридерами:
Если используются кастомные стили или HTML-шаблоны для popover, необходимо:
role="dialog" вручную.aria-labelledby и
aria-describedby на соответствующие элементы внутри
шаблона.tabindex="0").Driver.js предоставляет события, которые позволяют интегрировать дополнительные функции для пользователей скринридеров:
onShow — срабатывает при отображении шага, удобен для
установки фокуса.onNext / onPrevious — можно обновлять
aria-live или другие вспомогательные элементы.onReset — возвращает фокус к исходному состоянию
страницы.Использование этих событий позволяет создавать туры, полностью совместимые с технологиями assistive.