Для создания интерактивного тура с помощью Driver.js
необходимо сначала инициализировать объект Driver.
Конструктор принимает объект с глобальными настройками, которые будут
применяться ко всем шагам тура, если они не переопределены локально:
const driver = new Driver({
allowClose: true, // Можно ли закрыть тур пользователю
overlayClickNext: true, // Переход к следующему шагу при клике на затемнённый фон
showProgress: true, // Показывать индикатор прогресса
keyboardControl: true // Управление туром с клавиатуры
});
Эти параметры задают жизненный цикл всего тура, включая его поведение при завершении, закрытии или переходе между шагами.
Шаги тура создаются с помощью метода defineSteps(),
который принимает массив объектов. Каждый объект описывает
целевой элемент и поведение
подсказки:
driver.defineSteps([
{
element: '#buttonSubmit',
popover: {
title: 'Отправка формы',
description: 'Нажмите на эту кнопку, чтобы отправить данные.',
position: 'bottom'
}
},
{
element: '#menuSettings',
popover: {
title: 'Настройки',
description: 'Здесь можно изменить параметры приложения.',
position: 'right'
}
}
]);
Ключевые параметры шага:
top, bottom,
left, right, auto).После определения шагов тур запускается методом
start():
driver.start();
Метод start() инициирует жизненный цикл
тура: подсветка элементов, отображение всплывающих подсказок и
обработка навигации пользователя.
Если необходимо начать тур с конкретного шага, используется опция
startAt:
driver.startAt(1); // Начать с шага с индексом 1
Driver.js предоставляет методы для контроля тура в любой момент:
next() – переход к следующему шагу.previous() – возврат к предыдущему шагу.reset() – сброс текущего прогресса и возврат к первому
шагу.stop() – полное завершение тура с очисткой всех
подсветок и оверлея.Эти методы позволяют создавать динамичные и интерактивные сценарии, где следующий шаг может зависеть от действий пользователя на странице.
Жизненный цикл тура можно расширять через глобальные события:
driver.on('start', () => console.log('Тур начался'));
driver.on('complete', () => console.log('Тур завершён'));
driver.on('reset', () => console.log('Тур сброшен'));
driver.on('next', (step) => console.log(`Переход к шагу ${step}`));
driver.on('previous', (step) => console.log(`Возврат к шагу ${step}`));
driver.on('close', () => console.log('Тур закрыт пользователем'));
Эти события позволяют интегрировать тур с внешней логикой приложения, отслеживать прогресс пользователя и выполнять необходимые действия при завершении каждого шага.
Подсказки в Driver.js можно детально настраивать:
fade, slide, none).Например:
driver.defineSteps([
{
element: '#profilePic',
popover: {
title: 'Ваш профиль',
description: 'Здесь отображается ваша аватарка.',
position: 'top',
showButtons: true,
closeBtnText: 'Закрыть',
nextBtnText: 'Дальше',
prevBtnText: 'Назад'
}
}
]);
Шаги можно добавлять или удалять в процессе тура, что позволяет создавать адаптивные интерактивные сценарии:
driver.defineSteps([
{
element: '#step1',
popover: { title: 'Шаг 1', description: 'Первый шаг', position: 'bottom' }
}
]);
// Добавление шага после запуска тура
driver.defineSteps([
{
element: '#step2',
popover: { title: 'Шаг 2', description: 'Второй шаг', position: 'right' }
}
], true); // Второй аргумент true объединяет с уже существующими шагами
Для реализации сложных сценариев можно отслеживать текущий шаг и сохранять его в локальное хранилище или базу данных:
driver.on('next', (step) => {
localStorage.setItem('currentTourStep', step);
});
driver.startAt(Number(localStorage.getItem('currentTourStep')) || 0);
Таким образом, жизненный цикл тура может быть прерывистым и сохранять прогресс пользователя между сессиями.
Тур автоматически завершает жизненный цикл, когда пользователь
доходит до последнего шага, вызывая событие complete. После
этого оверлей исчезает, подсветка снимается, а все обработчики шагов
освобождаются, что предотвращает утечки памяти и конфликты с другими
элементами интерфейса.
Эти возможности делают Driver.js мощным инструментом для построения интерактивных руководств, обучающих сценариев и пошаговых туров, где каждый этап жизненного цикла тщательно контролируется и настраивается.