В библиотеке Driver.js события onNext и
onPrevious играют ключевую роль в управлении
последовательностью шагов интерактивного руководства. Они позволяют
реагировать на действия пользователя при переходе к следующему или
предыдущему шагу, добавляя гибкость и динамику в поведение гидов.
onNextСобытие onNext вызывается каждый раз, когда пользователь
нажимает кнопку Next (или аналогичную кнопку для
перехода к следующему шагу). Его основная задача — выполнение
произвольного кода перед отображением следующего шага.
Синтаксис:
driver.onNext(function(step) {
// step — объект текущего шага
console.log('Переход к следующему шагу:', step);
});
Аргумент step содержит полную
информацию о текущем шаге:
element — DOM-элемент, на который указывает шаг.popover — объект поповера с текстом и настройками
отображения.stage — порядковый номер шага.steps — массив всех шагов текущего драйвера.Применение onNext:
Валидация данных Можно проверять состояние формы или других элементов перед переходом к следующему шагу:
driver.onNext(function(step) {
if (!document.querySelector('#inputName').value) {
alert('Заполните поле имени перед продолжением');
driver.preventMove(); // предотвращает переход
}
});Динамическое изменение шагов Возможность добавлять или модифицировать шаги в процессе прохождения:
driver.onNext(function(step) {
if (step.stage === 2) {
driver.defineSteps([ /* новые шаги */ ]);
}
});Отслеживание аналитики Можно отправлять данные о прохождении шага на сервер:
driver.onNext(function(step) {
fetch('/analytics', {
method: 'POST',
body: JSON.stringify({ step: step.stage })
});
});onPreviousСобытие onPrevious срабатывает при переходе к
предыдущему шагу. Оно используется для контроля возврата по шагам и
позволяет выполнять любые действия до отображения предыдущего
поповера.
Синтаксис:
driver.onPrevious(function(step) {
console.log('Переход к предыдущему шагу:', step);
});
Особенности использования
onPrevious:
onNext.Пример ограничения возврата:
driver.onPrevious(function(step) {
if (step.stage === 0) {
alert('Невозможно вернуться на первый шаг');
driver.preventMove();
}
});
onNext и onPreviousЭти события могут работать вместе для создания сложной логики переходов:
driver.onNext(function(step) {
console.log(`Двигаемся вперед, шаг ${step.stage}`);
if (step.stage === 3) {
driver.defineSteps([{ element: '#special', popover: { title: 'Особый шаг' } }]);
}
});
driver.onPrevious(function(step) {
console.log(`Возврат на шаг ${step.stage}`);
if (step.stage === 1) {
alert('Вы возвращаетесь к важному шагу');
}
});
Такой подход позволяет создавать интерактивные гиды, которые динамически подстраиваются под действия пользователя и текущий контекст приложения.
driver.preventMove() — блокирует
текущий переход (используется внутри onNext или
onPrevious).driver.defineSteps(steps) —
переопределяет шаги в любой момент, что удобно для адаптивных
гайдов.driver.getCurrentStep() — возвращает
объект текущего шага.driver.moveNext() /
driver.movePrevious() — программно инициирует
переход вперед или назад, учитывая обработчики событий.onNext и
onPrevious идеально подходят для аналитики.Использование onNext и onPrevious
превращает Driver.js из простого инструмента подсказок в мощный
фреймворк для интерактивного обучения и геймификации
интерфейса, позволяя реагировать на действия пользователя и
управлять последовательностью шагов в реальном времени.