В Driver.js управление последовательностью шагов осуществляется через
встроенные методы и события, которые позволяют плавно переходить от
одного шага к другому, обеспечивая интерактивные подсказки пользователю.
Основным инструментом для перехода между шагами является метод
moveNext(), который вызывается на
экземпляре Driver. Этот метод автоматически закрывает текущий шаг и
открывает следующий в очереди.
driver.moveNext();
Если текущий шаг является последним, вызов
moveNext() завершает демонстрацию, после
чего срабатывает событие
driver:complete.
Driver.js поддерживает возможность автоматического перехода
между шагами через настройку
onNext для каждого шага. Это позволяет
выполнять определённый код перед открытием следующего шага или
реализовать условное продвижение.
const steps = [
{
element: '#step1',
popover: {
title: 'Первый шаг',
description: 'Описание первого шага',
position: 'bottom'
},
onNext: function () {
console.log('Переход к следующему шагу');
}
},
{
element: '#step2',
popover: {
title: 'Второй шаг',
description: 'Описание второго шага',
position: 'top'
}
}
];
const driver = new Driver();
driver.defineSteps(steps);
driver.start();
В данном примере для первого шага задан коллбек
onNext, который выполняется при вызове
moveNext(), позволяя добавлять
дополнительные действия между шагами.
Для управления движением назад используется метод
movePrevious(), который закрывает текущий
шаг и открывает предыдущий в очереди. Это особенно полезно, если
демонстрация шагов содержит ветвления или пользователю предоставляется
возможность повторного просмотра предыдущей подсказки.
driver.movePrevious();
Driver.js позволяет программно переходить к любому шагу, используя
moveTo(stepIndex), где
stepIndex — индекс шага в массиве,
определённом при помощи defineSteps().
Этот подход обеспечивает полный контроль над последовательностью и
позволяет реализовать динамические сценарии.
driver.moveTo(2); // Переход к третьему шагу
Метод moveTo() автоматически вызывает
все события закрытия и открытия шагов, что гарантирует корректное
выполнение коллбеков onNext и
onPrevious.
Driver.js предоставляет широкий набор событий, которые позволяют отслеживать переходы и добавлять кастомную логику:
driver:next — срабатывает перед
переходом к следующему шагу.driver:previous — срабатывает перед
переходом к предыдущему шагу.driver:complete — срабатывает при
завершении всех шагов.driver:reset — срабатывает при сбросе
демонстрации.Пример использования событий:
driver.on('driver:next', (step) => {
console.log('Переходим к шагу:', step);
});
driver.on('driver:complete', () => {
console.log('Все шаги завершены');
});
Для создания интерактивных сценариев можно использовать
условные переходы с помощью коллбеков
onNext или событий
driver:next. Например, можно проверять
состояние интерфейса или значения формы и переходить только при
выполнении определённых условий:
driver.on('driver:next', (step) => {
if (!document.querySelector('#requiredInput').value) {
alert('Заполните поле перед переходом');
step.preventDefault();
}
});
Метод preventDefault() внутри события
позволяет остановить переход к следующему шагу до выполнения необходимых
условий.
Driver.js поддерживает автоматическое переключение шагов с задержкой.
Для этого можно использовать стандартный
setTimeout в коллбеке
onNext:
{
element: '#step1',
popover: {
title: 'Шаг с задержкой',
description: 'Следующий шаг откроется через 3 секунды'
},
onNext: function () {
setTimeout(() => driver.moveNext(), 3000);
}
}
Такой подход позволяет создавать презентации, где каждый шаг демонстрируется в течение заданного времени, без вмешательства пользователя.
Для построения гибкой демонстрации шагов методы
moveNext(),
movePrevious(),
moveTo() и события
driver:next,
driver:previous можно комбинировать. Это
позволяет реализовать:
Пример динамического добавления шагов:
driver.on('driver:next', (step) => {
if (step.element === '#step2') {
driver.defineSteps([{
element: '#step2b',
popover: { title: 'Доп. шаг', description: 'Новый шаг после второго' }
}]);
}
});
В результате демонстрация становится адаптивной и полностью управляемой из кода.
Этот механизм переходов обеспечивает Driver.js гибкостью, позволяя строить как линейные, так и интерактивные сценарии с динамическим управлением шагами.