Driver.js — это библиотека для создания пошаговых интерактивных гидов по интерфейсу веб-приложений. Одной из ключевых возможностей является управление навигацией с клавиатуры, что повышает доступность и удобство использования.
Driver.js поддерживает несколько стандартных клавиш для управления шагами гида:
По умолчанию Driver.js автоматически обрабатывает Tab, Enter и Escape. Дополнительные клавиши требуют явной конфигурации через события.
Для расширенной настройки клавиатурного взаимодействия используется
объект keyboardControl в конфигурации Driver:
const driver = new Driver({
keyboardControl: true
});
Если значение keyboardControl установлено в
true, активируются стандартные клавиши:
Enter, Escape,
Tab.
Для более гибкой настройки можно использовать метод
on('event', callback) для отслеживания пользовательских
клавиш:
driver.on('next', () => {
console.log('Переход к следующему шагу');
});
driver.on('previous', () => {
console.log('Возврат к предыдущему шагу');
});
driver.on('close', () => {
console.log('Тур завершен');
});
Можно подключить свои обработчики событий клавиатуры, чтобы управлять навигацией по шагам:
document.addEventListener('keydown', (event) => {
switch (event.key) {
case 'ArrowRight':
driver.moveNext();
break;
case 'ArrowLeft':
driver.movePrevious();
break;
case 'Escape':
driver.reset();
break;
}
});
Методы moveNext(),
movePrevious() и
reset() позволяют полностью контролировать
логику движения по шагам, включая кастомные комбинации клавиш.
Driver.js автоматически устанавливает фокус на текущем элементе тура для поддержки клавиатурного управления. Это особенно важно для пользователей, работающих с клавиатурой:
const steps = [
{
element: '#button1',
popover: {
title: 'Кнопка 1',
description: 'Описание кнопки 1',
position: 'bottom'
}
},
{
element: '#input1',
popover: {
title: 'Поле ввода',
description: 'Описание поля ввода',
position: 'top'
}
}
];
driver.defineSteps(steps);
driver.start();
При переходе к следующему шагу Driver.js автоматически переносит
фокус на element текущего шага, обеспечивая
доступность.
Если необходимо запретить определённые клавиши для конкретного тура,
можно использовать событие beforeNext:
driver.on('beforeNext', (step) => {
if (step.popover.title === 'Поле ввода') {
// Блокируем переход по Enter
return false;
}
});
Возврат false отменяет стандартное поведение клавиши и
позволяет внедрять кастомную логику.
Driver.js совместим с ARIA-атрибутами, что повышает уровень доступности для пользователей с ограничениями:
role="dialog" и
aria-modal="true".tabindex="0", что делает их доступными для навигации
клавиатурой.aria-hidden для скрытия остальных элементов
интерфейса.Для создания сложных интерактивных гидов можно назначать произвольные комбинации клавиш:
document.addEventListener('keydown', (event) => {
if (event.ctrlKey && event.key === 'ArrowRight') {
driver.moveNext();
}
if (event.ctrlKey && event.key === 'ArrowLeft') {
driver.movePrevious();
}
});
Такая настройка позволяет интегрировать гайд с существующими горячими клавишами приложения, не нарушая пользовательский опыт.
keyboardControl: true для базовой
навигации.moveNext(),
movePrevious(), reset() для кастомного
управления шагами.beforeNext и
beforePrev для ограничения действий на отдельных
шагах.keydown.Эти практики позволяют создавать полностью управляемые с клавиатуры пошаговые гиды, которые удобны как для обычных пользователей, так и для людей с ограниченными возможностями.