onNext и onPrevious

В библиотеке Driver.js события onNext и onPrevious играют ключевую роль в управлении последовательностью шагов интерактивного руководства. Они позволяют реагировать на действия пользователя при переходе к следующему или предыдущему шагу, добавляя гибкость и динамику в поведение гидов.


Событие onNext

Событие onNext вызывается каждый раз, когда пользователь нажимает кнопку Next (или аналогичную кнопку для перехода к следующему шагу). Его основная задача — выполнение произвольного кода перед отображением следующего шага.

Синтаксис:

driver.onNext(function(step) {
    // step — объект текущего шага
    console.log('Переход к следующему шагу:', step);
});

Аргумент step содержит полную информацию о текущем шаге:

  • element — DOM-элемент, на который указывает шаг.
  • popover — объект поповера с текстом и настройками отображения.
  • stage — порядковый номер шага.
  • steps — массив всех шагов текущего драйвера.

Применение onNext:

  1. Валидация данных Можно проверять состояние формы или других элементов перед переходом к следующему шагу:

    driver.onNext(function(step) {
        if (!document.querySelector('#inputName').value) {
            alert('Заполните поле имени перед продолжением');
            driver.preventMove(); // предотвращает переход
        }
    });
  2. Динамическое изменение шагов Возможность добавлять или модифицировать шаги в процессе прохождения:

    driver.onNext(function(step) {
        if (step.stage === 2) {
            driver.defineSteps([ /* новые шаги */ ]);
        }
    });
  3. Отслеживание аналитики Можно отправлять данные о прохождении шага на сервер:

    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() — программно инициирует переход вперед или назад, учитывая обработчики событий.

Практические рекомендации

  1. Обработка ошибок и условий — всегда использовать проверку состояния элементов перед переходом.
  2. Логирование действийonNext и onPrevious идеально подходят для аналитики.
  3. Динамическая модификация шагов — позволяет создавать гибкие и адаптивные пользовательские туры.
  4. Избегать тяжелой синхронной логики — длительные операции в обработчиках могут замедлить отклик интерфейса.

Использование onNext и onPrevious превращает Driver.js из простого инструмента подсказок в мощный фреймворк для интерактивного обучения и геймификации интерфейса, позволяя реагировать на действия пользователя и управлять последовательностью шагов в реальном времени.