Shepherd.js предоставляет встроенный механизм для отладки туров,
который позволяет отслеживать внутренние события и состояние шагов.
Основной инструмент для этого — свойство debug в
конфигурации тура. Его установка в значение true активирует
вывод подробной информации о каждом событии в консоль браузера.
const tour = new Shepherd.Tour({
defaultStepOptions: {
classes: 'shepherd-theme-arrows'
},
debug: true
});
При активном режиме отладки каждая инициализация шага, переход между шагами и завершение тура сопровождаются логами. Это особенно полезно при сложных сценариях с динамически создаваемыми элементами DOM.
Shepherd.js использует систему событий, которую можно подключать к туру и отдельным шагам. Основные события:
start — тур запущенcomplete — тур завершён успешноcancel — тур прерванshow — шаг отображёнhide — шаг скрытactive — шаг активенПример подключения логирования для всех шагов:
tour.on('start', () => console.log('Тур запущен'));
tour.on('complete', () => console.log('Тур завершён'));
tour.on('cancel', () => console.log('Тур отменён'));
tour.on('show', (event) => console.log(`Показан шаг: ${event.step.id}`));
tour.on('hide', (event) => console.log(`Скрыт шаг: ${event.step.id}`));
Такой подход позволяет отслеживать динамику работы тура и выявлять ошибки привязки к элементам DOM.
Одной из частых проблем является попытка привязки шага к элементу,
который ещё не загружен на страницу. Режим отладки Shepherd.js выводит
предупреждения при невозможности найти указанный селектор. Для
дополнительной проверки можно использовать метод attachTo с
функцией возврата элемента:
tour.addStep({
id: 'step1',
text: 'Пример шага',
attachTo: {
element: () => document.querySelector('#dynamic-element'),
on: 'bottom'
}
});
Это гарантирует, что шаг будет корректно привязан даже к динамическим элементам.
Методы тура предоставляют доступ к текущему состоянию:
tour.getCurrentStep() — возвращает объект активного
шагаtour.steps — массив всех шагов с их состояниямиstep.isOpen() — проверка, отображается ли шагПример использования для отладки:
console.log('Текущий шаг:', tour.getCurrentStep()?.id);
tour.steps.forEach(step => {
console.log(`Шаг ${step.id} открыт: ${step.isOpen()}`);
});
Это помогает понять, какие шаги активны, какие пропущены, и корректно ли завершён тур.
highlightClass и визуальной отладкиShepherd.js поддерживает визуальное выделение целевых элементов через
опцию highlightClass. При отладке это удобно для
визуального контроля привязки шагов:
tour.addStep({
id: 'highlight-step',
text: 'Шаг с подсветкой',
attachTo: { element: '#button', on: 'right' },
highlightClass: 'shepherd-highlight-example'
});
В режиме отладки можно добавить CSS для
shepherd-highlight-example с яркими рамками или фоном,
чтобы сразу видеть, к какому элементу привязан шаг.
При работе с динамическими интерфейсами полезно использовать задержки
перед отображением шага. В Shepherd.js это реализуется через метод
beforeShowPromise:
tour.addStep({
id: 'delayed-step',
text: 'Шаг с задержкой',
beforeShowPromise: () => {
return new Promise(resolve => setTimeout(resolve, 500));
}
});
В комбинации с режимом debug это позволяет отследить
порядок выполнения шагов и убедиться, что элементы успели
загрузиться.
Для глубокого анализа взаимодействия с туром можно подключать пользовательские обработчики к кнопкам шага:
tour.addStep({
id: 'action-step',
text: 'Шаг с кнопкой действия',
buttons: [
{
text: 'Далее',
action: () => {
console.log('Кнопка "Далее" нажата на шаге action-step');
return tour.next();
}
}
]
});
Такой подход позволяет фиксировать клики и переходы между шагами для более детальной диагностики.
В мобильной версии интерфейса важно проверять позиционирование шагов и взаимодействие с сенсорными событиями. Режим отладки помогает выявить:
Дополнительно можно включать логирование размеров элементов и их координат перед отображением шага:
tour.on('show', (event) => {
const rect = event.step.el.getBoundingClientRect();
console.log(`Размеры и позиция шага ${event.step.id}:`, rect);
});
Это облегчает настройку шагов для адаптивных интерфейсов.
Режим отладки Shepherd.js является комплексным инструментом для мониторинга работы тура, отладки привязки к DOM, анализа последовательности шагов и пользовательских взаимодействий. Его использование позволяет создавать стабильные и предсказуемые интерактивные гиды на веб-страницах.