В обновлении Driver.js с версии 0.x была проведена значительная переработка архитектуры, направленная на упрощение интеграции и расширение возможностей кастомизации. Основное внимание уделено стабильности методов, улучшенной обработке шагов и поддержке динамического контента.
Совместимость с 0.x: Несмотря на переработку,
сохранена обратная совместимость на базовом уровне. Методы
drive() и highlight() сохраняют прежние
сигнатуры, однако часть опций была переименована или изменена для
лучшего соответствия стандартам ES6.
Ранее конфигурация создавалась через объект, передаваемый в конструктор:
const driver = new Driver({
opacity: 0.75,
padding: 10,
allowClose: true
});
В новой версии структура объектов шагов и глобальные настройки разделены более явно. Теперь можно определять глобальные параметры и индивидуальные настройки шагов:
const driver = new Driver({
overlayOpacity: 0.7,
allowClose: true,
keyboardControl: true
});
driver.defineSteps([
{
element: '#step1',
popover: {
title: 'Первый шаг',
description: 'Описание шага 1',
position: 'bottom'
}
},
{
element: '#step2',
popover: {
title: 'Второй шаг',
description: 'Описание шага 2',
position: 'right'
}
}
]);
В версии 0.x использовалась простая привязка к селектору и позиция
указывалась через ключ placement. В обновлении применяется
структура popover, которая позволяет:
popover: {
title: 'Название шага',
description: 'Текст подсказки',
position: 'left',
padding: 15,
closeBtnText: 'Закрыть'
}
Параметр position поддерживает значения:
top, bottom, left,
right, auto. Значение auto
обеспечивает автоматическое определение оптимальной позиции в
зависимости от видимой области.
Старт и остановка:
driver.start(); // Запуск туров
driver.stop(); // Принудительная остановка
driver.reset(); // Сброс состояния
Навигация по шагам:
driver.next() — переход к следующему шагу;driver.prev() — возврат к предыдущему шагу;driver.moveTo(index) — переход к шагу с конкретным
индексом.Обновление версии позволило более гибко работать с шагами в рантайме:
driver.addStep({
element: '#newStep',
popover: {
title: 'Новый шаг',
description: 'Описание нового шага',
position: 'top'
}
});
driver.removeStep('#oldStep');
Это особенно полезно при построении интерактивных туров, где контент страницы загружается динамически или изменяется по действиям пользователя.
Новые глобальные настройки позволяют гибко управлять поведением всего драйвера:
overlayOpacity — прозрачность затемнения фона;allowClose — возможность закрытия кликом по
оверлею;keyboardControl — поддержка навигации с
клавиатуры;stageBackground — цвет фона подсветки;animation — включение анимации появления/исчезновения
подсказок.const driver = new Driver({
overlayOpacity: 0.8,
allowClose: false,
keyboardControl: true,
animation: true
});
Driver.js теперь поддерживает событийную модель для отслеживания состояния тура:
driver.on('start', callback) — запуск тура;driver.on('stop', callback) — остановка тура;driver.on('next', callback) — переход к следующему
шагу;driver.on('prev', callback) — переход к предыдущему
шагу;driver.on('complete', callback) — завершение всех
шагов.driver.on('complete', () => {
console.log('Тур завершен');
});
В версии 0.x загрузка контента была статической, что ограничивало
использование в SPA. В обновлении реализована поддержка асинхронных
шагов через element в виде функции:
driver.defineSteps([
{
element: () => document.querySelector('#dynamicElement'),
popover: {
title: 'Динамический шаг',
description: 'Элемент появляется после AJAX запроса',
position: 'bottom'
}
}
]);
Это гарантирует корректное отображение подсказок даже при динамически создаваемых элементах.
Новая версия расширяет возможности стилизации:
driver.defineSteps([
{
element: '#step1',
popover: {
className: 'custom-popover',
style: {
maxWidth: '400px',
fontSize: '14px'
},
position: 'right'
}
}
]);
Основные отличия от версии 0.x:
Эти изменения делают Driver.js более гибким инструментом для создания интерактивных туров и подсказок на современных веб-приложениях.