Driver.js предоставляет возможность создания интерактивных руководств по интерфейсу, включая функции перехода между шагами. Каждое пошаговое объяснение в Driver.js представлено объектом с набором опций, описывающих целевой элемент, заголовок, описание и поведение шага.
Ключевым аспектом является управление порядком шагов и возможность возврата к предыдущему шагу, что особенно важно для комплексных интерактивных руководств, где пользователь может пропустить или неправильно выполнить действие.
Каждый шаг задается через массив объектов в параметре
steps при создании экземпляра Driver:
const driver = new Driver({
animate: true,
opacity: 0.75,
steps: [
{
element: '#step1',
popover: {
title: 'Шаг 1',
description: 'Описание первого шага',
position: 'bottom'
}
},
{
element: '#step2',
popover: {
title: 'Шаг 2',
description: 'Описание второго шага',
position: 'top'
}
},
{
element: '#step3',
popover: {
title: 'Шаг 3',
description: 'Описание третьего шага',
position: 'right'
}
}
]
});
В этом массиве шаги идут по порядку, но Driver.js автоматически создает навигацию вперед и назад, позволяя пользователю вернуться к предыдущему шагу, если нажать кнопку “Назад”.
Для ручного управления шагами используются методы экземпляра
Driver:
driver.moveNext() – переход к следующему шагу.driver.movePrevious() – возврат к предыдущему
шагу.driver.start() – запуск последовательности шагов с
первого.driver.reset() – сброс текущего состояния и шагов.Пример ручного контроля с кнопками:
document.querySelector('#nextBtn').addEventListener('click', () => {
driver.moveNext();
});
document.querySelector('#prevBtn').addEventListener('click', () => {
driver.movePrevious();
});
Таким образом, пользователь может пошагово двигаться как вперед, так и назад, без потери текущего состояния.
Driver.js поддерживает события, позволяющие отслеживать изменения шагов и реализовывать кастомную логику при возврате:
onNext – вызывается перед переходом к следующему
шагу.onPrevious – вызывается перед возвратом к предыдущему
шагу.onHighlightStarted – срабатывает при выделении нового
элемента.onReset – при полном сбросе шагов.Пример:
driver.on('onPrevious', (step) => {
console.log(`Возврат к шагу: ${step.popover.title}`);
});
Это позволяет реализовать динамическую проверку состояния интерфейса и корректно обновлять контент поповера при возврате.
Внутри Driver.js каждый шаг имеет индекс, начиная с 0. Для сложной логики возврата можно использовать текущий индекс:
let currentStep = driver.getCurrentStep();
if (currentStep > 0) {
driver.movePrevious();
}
Метод getCurrentStep() возвращает объект текущего шага,
что упрощает контроль над последовательностью шагов при
возврате.
В интерактивных руководствах иногда требуется:
Это реализуется через динамическое управление массивом
steps и события
onNext/onPrevious:
driver.on('onPrevious', (step) => {
if(step.element === '#step3' && !userCompletedStep2) {
driver.movePrevious(); // дополнительный возврат к step2
}
});
Такой подход позволяет гибко управлять логикой возврата и повторного прохождения шагов.
Кнопка “Назад” в Driver.js добавляется автоматически, если включена
опция showButtons в popover:
{
element: '#step2',
popover: {
title: 'Шаг 2',
description: 'Описание второго шага',
position: 'top',
showButtons: true
}
}
При этом пользователь получает полноценную навигацию вперед и назад, без необходимости писать собственные обработчики событий.
onPrevious для кастомной логики:
корректировка шагов, проверка условий, подгрузка данных.showButtons),
если руководство предполагает сложное взаимодействие.С помощью этих инструментов Driver.js позволяет создавать интерактивные, управляемые руководства, где возврат к предыдущему шагу полностью контролируется как автоматически, так и программно, обеспечивая гибкость и удобство навигации.