После инициализации библиотеки формируется экземпляр драйвера, через который осуществляется управление поведением пошагового тура. Экземпляр содержит набор методов, позволяющих запускать, останавливать, настраивать и динамически изменять сценарий взаимодействия с пользователем.
import Driver from "driver.js";
const driver = new Driver({
animate: true,
opacity: 0.75
});
Все дальнейшие действия выполняются через объект
driver.
defineStepsМетод предназначен для задания последовательности шагов тура. Каждый шаг описывает элемент интерфейса и сопровождающий его контент.
driver.defineSteps([
{
element: "#header",
popover: {
title: "Заголовок",
description: "Описание элемента",
position: "bottom"
}
},
{
element: "#menu",
popover: {
title: "Меню",
description: "Навигация по сайту",
position: "right"
}
}
]);
Ключевые особенности:
startЗапускает выполнение тура с первого шага.
driver.start();
Поведение:
highlightПозволяет подсветить конкретный элемент без запуска полноценного тура.
driver.highlight({
element: "#login",
popover: {
title: "Авторизация",
description: "Введите данные для входа"
}
});
Отличие от start:
defineStepsmoveNextПереход к следующему шагу.
driver.moveNext();
Особенности:
movePreviousВозвращает к предыдущему шагу.
driver.movePrevious();
Особенности:
moveToПозволяет перейти к конкретному шагу по индексу.
driver.moveTo(2);
Особенности:
hasNextStepПроверяет наличие следующего шага.
if (driver.hasNextStep()) {
driver.moveNext();
}
Возвращает:
true — если следующий шаг существуетfalse — если текущий шаг последнийhasPreviousStepПроверяет наличие предыдущего шага.
if (driver.hasPreviousStep()) {
driver.movePrevious();
}
getCurrentStepВозвращает текущий активный шаг.
const step = driver.getCurrentStep();
console.log(step);
Структура:
getCurrentStepIndexВозвращает индекс текущего шага.
const index = driver.getCurrentStepIndex();
refreshПерерисовывает текущий шаг.
driver.refresh();
Использование:
resetПолностью сбрасывает состояние драйвера.
driver.reset();
Что происходит:
destroyУдаляет экземпляр драйвера и освобождает ресурсы.
driver.destroy();
Различие с reset:
reset — временный сбросdestroy — окончательное удалениеsetConfigПозволяет изменить конфигурацию драйвера после создания.
driver.setConfig({
opacity: 0.5,
padding: 10
});
Особенности:
getConfigВозвращает текущую конфигурацию.
const config = driver.getConfig();
setStepsАльтернативный способ задать шаги.
driver.setSteps([
{
element: "#profile",
popover: {
title: "Профиль",
description: "Настройки пользователя"
}
}
]);
Отличие от defineSteps:
addStepДобавляет шаг к уже существующим.
driver.addStep({
element: "#footer",
popover: {
title: "Подвал",
description: "Дополнительная информация"
}
});
removeStepУдаляет шаг по индексу.
driver.removeStep(1);
isActivatedПроверяет, запущен ли драйвер.
if (driver.isActivated()) {
console.log("Тур активен");
}
onНазначает обработчики событий.
driver.on("next", () => {
console.log("Следующий шаг");
});
Поддерживаемые события:
nextpreviousresethighlightStartedhighlightCompletedoffУдаляет обработчик события.
driver.off("next");
Методы экземпляра позволяют реализовать сложные сценарии:
driver.defineSteps(steps);
document.querySelector("#start").addEventListener("click", () => {
driver.start();
});
document.querySelector("#skip").addEventListener("click", () => {
driver.reset();
});
document.querySelector("#next").addEventListener("click", () => {
if (driver.hasNextStep()) {
driver.moveNext();
}
});
Методы позволяют изменять поведение тура на лету:
if (user.isAdmin) {
driver.addStep({
element: "#admin-panel",
popover: {
title: "Админ-панель",
description: "Дополнительные функции"
}
});
}
fetch("/api/data")
.then(res => res.json())
.then(data => {
driver.setSteps(generateSteps(data));
driver.start();
});
При работе с динамическими интерфейсами необходимо учитывать:
setTimeout(() => {
driver.refresh();
}, 500);
Типичный жизненный цикл работы с экземпляром:
setConfig, defineSteps)start)moveNext, movePrevious)reset или destroy)1. Отсутствие элемента
element: "#not-found"
Если элемент не найден — шаг может быть пропущен или вызовет ошибку.
2. Динамический DOM Требуется
refresh().
3. Повторный запуск
driver.start(); // без reset может вести к неожиданному поведению
driver.setSteps(steps);
driver.on("next", () => {
console.log("Шаг:", driver.getCurrentStepIndex());
});
driver.start();
Методы экземпляра формируют полный API управления поведением интерактивного тура, обеспечивая гибкость, расширяемость и интеграцию с любыми пользовательскими сценариями.