Одной из самых частых ошибок является некорректная инициализация экземпляра Shepherd.Tour. Для корректной работы необходимо:
const tour = new Shepherd.Tour({
defaultStepOptions: {
classes: 'shepherd-theme-arrows',
scrollTo: true
}
});
defaultStepOptions
приводит к неожиданному поведению шагов: шаги могут не отображать
стрелки или игнорировать прокрутку.Добавление шагов через tour.addStep() часто вызывает
трудности:
tour.addStep({
id: 'example-step',
text: 'Пример текста',
attachTo: {
element: '.selector',
on: 'bottom'
}
});
Ключевые моменты:
element: '.nonexistent') делает шаг невидимым и не
вызывает ошибок, что приводит к путанице.on (например,
'top-left' вместо 'top') ломает
позиционирование тултипа.id может усложнить
управление туром и динамическое переключение между шагами.Shepherd.js часто используется в динамических интерфейсах. Основная
ошибка — вызов tour.start() до того, как DOM полностью
готов:
document.addEventListener('DOMContentLoaded', () => {
tour.start();
});
Неправильное использование методов навигации next(),
back(), cancel() и complete()
приводит к сбоям:
tour.next() на последнем шаге не приводит к
завершению тура, если не предусмотрен обработчик
onComplete.tour.cancel() без сохранения
состояния может вызвать потерю данных, если шаги изменяют интерфейс
пользователя.Shepherd.js поддерживает обширную кастомизацию, однако ошибки возникают при:
show, hide,
before-show и т. п. без проверки существования шага, что
вызывает ошибки типа
Cannot read property '... of undefined'.text вместо
строки: text: document.createElement('div') не будет
корректно обработан.Shepherd.js использует Popper.js для позиционирования, и ошибки часто возникают при:
Неправильное хранение состояния шага или завершения тура вызывает логические ошибки:
tour.isActive() перед вызовом
навигационных методов приводит к вызовам по несуществующему туру.tour.complete() не сбрасывает шаги) приводит к
отсутствию шагов при повторном запуске.// Ошибка: неверный селектор
tour.addStep({
id: 'wrong-step',
text: 'Неправильный элемент',
attachTo: { element: '#missing', on: 'top' }
});
// Ошибка: запуск до загрузки динамического контента
tour.start();
// Ошибка: нестандартная кастомизация без проверки
tour.addStep({
id: 'custom-step',
text: '<div>HTML контент</div>',
buttons: [
{
text: 'Далее',
action: () => tour.next()
}
]
});
Каждая из этих ошибок легко диагностируется при внимательном анализе DOM-элементов, последовательности вызовов и параметров шагов. Правильное соблюдение структуры инициализации, привязки элементов и обработки событий предотвращает большинство проблем при работе с Shepherd.js.