Библиотека Driver.js предоставляет гибкий механизм создания интерактивных пошаговых руководств по веб-интерфейсу. Одной из ключевых особенностей является возможность передачи данных между различными шагами через коллбэки. Это позволяет динамически управлять поведением шагов, изменять их содержимое и адаптировать последовательность в зависимости от действий пользователя.
В Driver.js используются несколько типов коллбэков:
Коллбэки принимают один объект параметров, содержащий контекст текущего шага и состояния Driver. Через этот объект можно передавать данные между шагами, а также контролировать визуальные элементы.
Для передачи данных между шагами создается объект состояния, который можно изменять в коллбэках. Пример структуры объекта состояния:
const tourState = {
userProgress: 0,
lastClickedElement: null,
customData: {}
};
Этот объект можно передавать в коллбэки через замыкания:
const driver = new Driver({
onNext: function (element) {
tourState.userProgress += 1;
tourState.lastClickedElement = element;
},
onPrevious: function () {
tourState.userProgress -= 1;
}
});
driver.defineSteps([
{
element: '#step1',
popover: {
title: 'Шаг 1',
description: 'Описание шага 1',
position: 'bottom'
}
},
{
element: '#step2',
popover: {
title: 'Шаг 2',
description: 'Описание шага 2',
position: 'top'
}
}
]);
driver.start();
В этом примере объект tourState сохраняет прогресс
пользователя и последний выбранный элемент, что позволяет использовать
эти данные на следующих шагах.
С помощью коллбэков можно изменять содержимое поповеров в реальном времени. Например, изменение текста на основе действий пользователя:
driver.defineSteps([
{
element: '#step1',
popover: {
title: 'Вопрос',
description: 'Выберите опцию',
position: 'right'
},
onNext: function () {
const nextStep = driver.getStepByIndex(1);
nextStep.popover.description = `Вы выбрали: ${tourState.customData.selectedOption}`;
}
},
{
element: '#step2',
popover: {
title: 'Результат',
description: 'Проверка выбора',
position: 'left'
}
}
]);
Здесь tourState.customData.selectedOption обновляется в
предыдущем шаге и используется для динамического описания следующего
шага.
Коллбэки могут управлять логикой перехода между шагами. Например, пропуск шагов при определенных условиях:
driver.defineSteps([
{
element: '#step1',
popover: { title: 'Шаг 1', description: 'Начало' },
onNext: function () {
if (!tourState.customData.acceptedTerms) {
driver.moveToNextStep(2); // Пропускаем шаг 2
}
}
},
{
element: '#step2',
popover: { title: 'Шаг 2', description: 'Дополнительный шаг' }
},
{
element: '#step3',
popover: { title: 'Шаг 3', description: 'Финальный шаг' }
}
]);
Таким образом, коллбэки дают полный контроль над последовательностью шагов в зависимости от данных, сохраненных в объекте состояния.
Передача данных через коллбэки в Driver.js обеспечивает гибкость, адаптивность и контроль последовательности шагов, позволяя строить сложные, интерактивные руководства без жесткой привязки к статическому контенту.