Driver.js — это библиотека для создания интерактивных гидов по
веб-приложению. Она позволяет выделять элементы страницы, отображать
подсказки и пошагово вести пользователя через интерфейс. Основой работы
является объект Driver, который управляет
последовательностью шагов и их визуальным отображением.
Для начала работы создается экземпляр Driver:
const driver = new Driver({
animate: true,
opacity: 0.75,
padding: 10,
allowClose: false,
});
Ключевые параметры:
animate — включает анимацию при переходе между
шагами.opacity — прозрачность затемнения фона.padding — отступ вокруг выделяемого элемента.allowClose — запрет на закрытие подсказки
пользователем.Шаги определяются как массив объектов:
driver.defineSteps([
{
element: '#buttonStart',
popover: {
title: 'Начало работы',
description: 'Нажмите на кнопку, чтобы начать процесс.',
position: 'bottom'
}
},
{
element: '#inputEmail',
popover: {
title: 'Ввод Email',
description: 'Введите ваш Email для регистрации.',
position: 'right'
}
}
]);
Свойства шага:
element — селектор или DOM-узел для подсветки.popover.title — заголовок подсказки.popover.description — основной текст.popover.position — позиция подсказки относительно
элемента (top, bottom, left,
right, auto).Driver.js поддерживает расширения через плагины. Плагин — это объект с определенной структурой, который подключается к экземпляру Driver и изменяет поведение шагов или событий.
const myPlugin = {
name: 'highlightPlugin',
onBeforeStep: (step) => {
console.log('Перед шагом:', step);
},
onAfterStep: (step) => {
console.log('После шага:', step);
},
onStart: () => {
console.log('Тур начат');
},
onStop: () => {
console.log('Тур завершен');
}
};
События плагина:
onBeforeStep(step) — вызывается перед отображением
каждого шага.onAfterStep(step) — после завершения шага.onStart() — при запуске тура.onStop() — при завершении тура.После создания плагина его необходимо зарегистрировать:
driver.use(myPlugin);
Можно подключать несколько плагинов:
driver.use(pluginOne);
driver.use(pluginTwo);
Driver.js выполнит все события каждого плагина в порядке подключения.
Пример плагина, который изменяет цвет подсветки элементов:
const customHighlight = {
name: 'customHighlight',
onBeforeStep: (step) => {
const el = document.querySelector(step.element);
if (el) {
el.style.boxShadow = '0 0 15px 5px rgba(255, 0, 0, 0.5)';
}
},
onAfterStep: (step) => {
const el = document.querySelector(step.element);
if (el) {
el.style.boxShadow = '';
}
}
};
driver.use(customHighlight);
Пояснение:
Плагины полезны для обработки элементов, которые создаются динамически:
const dynamicElementPlugin = {
onBeforeStep: (step) => {
if (!document.querySelector(step.element)) {
const placeholder = document.createElement('div');
placeholder.id = step.element.replace('#','');
document.body.appendChild(placeholder);
}
}
};
driver.use(dynamicElementPlugin);
Плагины могут изменять ход тура:
const skipCertainStep = {
onBeforeStep: (step) => {
if (step.element === '#optionalFeature') {
driver.skip();
}
}
};
Этот плагин автоматически пропускает шаги, связанные с необязательными элементами интерфейса.
const driver = new Driver({ animate: true });
driver.defineSteps(stepsArray);
driver.use(customHighlight);
driver.use(skipCertainStep);
driver.start();
Такой подход позволяет создавать гибкие, настраиваемые туры, расширяя функциональность Driver.js через собственные плагины, модифицируя отображение подсказок, порядок шагов и обработку событий.