Shepherd.js предоставляет гибкую систему событий, позволяющую контролировать поведение пошаговых туров на веб-странице. События можно разделить на несколько категорий: события самого тура, события шагов и глобальные пользовательские события. Понимание их назначения и правильная настройка критически важны для создания интерактивных, отзывчивых и безопасных пользовательских интерфейсов.
Tour Events)Тур (Shepherd.Tour) генерирует события, которые
сигнализируют о его жизненном цикле и взаимодействиях с пользователем.
Основные события тура:
start – срабатывает при запуске
тура методом tour.start(). Позволяет инициализировать
необходимые элементы интерфейса перед появлением первого шага.
complete – происходит, когда тур
успешно завершен (обычно после последнего шага). Часто используется для
аналитики или автоматической активации дополнительных функций.
cancel – вызывается при отмене тура
пользователем через кнопку закрытия или программно через
tour.cancel(). Полезно для сохранения состояния или сброса
интерфейса.
show – срабатывает при показе
любого шага тура. Обеспечивает возможность динамически изменять
содержимое или стили текущего шага перед его отображением.
hide – вызывается при скрытии шага,
включая переход на следующий шаг, закрытие или отмену. Позволяет
выполнять очистку или отключение временных эффектов.
active – срабатывает при активации
конкретного шага. Отличается от show, так как учитывает
логику активного шага без визуальных эффектов, например, при программной
навигации.
Step Events)Каждый шаг (Shepherd.Step) является самостоятельным
объектом с собственными событиями:
before-show – вызывается перед
отображением шага. Можно использовать для проверки условий, установки
динамического контента или блокировки шага.
show – срабатывает в момент
отображения шага на странице. Позволяет запускать анимации или
дополнительные скрипты, синхронизированные с появлением
подсказки.
before-hide – срабатывает перед
скрытием шага. Часто используется для валидации данных, сохранения
состояния или предотвращения скрытия при определённых условиях.
hide – вызывается после того как
шаг полностью скрыт. Удобно для очистки DOM-элементов, удаления
слушателей событий или остановки таймеров.
complete – срабатывает при успешном
завершении шага. Отличается от событий туров тем, что фиксирует прогресс
на уровне конкретного шага.
cancel – аналогично событию тура,
но привязано к отдельному шагу. Позволяет реагировать на отмену
конкретной подсказки.
Помимо встроенных событий, Shepherd.js позволяет создавать кастомные события через стандартный EventEmitter, реализованный внутри туров и шагов. Использование пользовательских событий расширяет возможности интеграции с другими библиотеками:
tour.on('my-custom-event', () => {
console.log('Пользовательское событие произошло');
});
tour.steps[0].on('step-custom', () => {
console.log('Кастомное событие конкретного шага');
});
Пользовательские события позволяют:
off(event, handler) позволяют отключать обработчики,
предотвращая утечки памяти при динамическом создании туров.const tour = new Shepherd.Tour({
useModalOverlay: true,
});
tour.addStep({
id: 'intro',
text: 'Добро пожаловать в тур!',
attachTo: { element: '.header', on: 'bottom' },
});
tour.on('start', () => console.log('Тур запущен'));
tour.steps[0].on('show', () => console.log('Показывается первый шаг'));
tour.steps[0].on('hide', () => console.log('Первый шаг скрыт'));
tour.start();
В этом примере события тура и события шага обрабатываются одновременно, что позволяет гибко контролировать последовательность действий.
Эффективное использование событий в Shepherd.js позволяет создавать полностью интерактивные, отзывчивые и адаптивные туры, где каждый шаг и каждый момент жизненного цикла тура контролируется с высокой точностью, обеспечивая пользователю наилучший опыт взаимодействия с интерфейсом.