Событие before-hide в Shepherd.js является жизненно
важным инструментом для управления поведением шагов туров перед их
скрытием. Оно позволяет выполнить определённые действия или проверку
условий непосредственно перед закрытием шага, что даёт
возможность контролировать поток пользователя и предотвращать
преждевременное завершение подсказки.
before-hideКаждый шаг Shepherd.js поддерживает возможность подписки на события
через объект конфигурации или метод .on().
before-hide срабатывает до того, как шаг будет
скрыт, и предоставляет контекст шага, что позволяет получить
доступ к его свойствам, элементам DOM и методам.
Пример привязки события в конфигурации шага:
const tour = new Shepherd.Tour({
defaultStepOptions: {
scrollTo: true
}
});
tour.addStep({
id: 'example-step',
text: 'Это пример шага.',
attachTo: {
element: '#example-element',
on: 'bottom'
},
buttons: [
{
text: 'Закрыть',
action() {
tour.next();
}
}
],
beforeHide() {
console.log('Шаг готов к скрытию');
}
});
В этом примере функция beforeHide вызывается перед тем,
как шаг будет скрыт. Это удобное место для выполнения:
before-hide с методом .on()Событие также можно подписывать через метод .on(), что
полезно, если требуется динамическое управление шагом после его
создания:
const step = tour.addStep({
id: 'dynamic-step',
text: 'Динамический шаг',
attachTo: { element: '#dynamic', on: 'top' },
});
step.on('before-hide', () => {
console.log('Перед скрытием динамического шага');
});
Такой подход позволяет отделить логику событий от конфигурации шага, делая код более структурированным и поддерживаемым.
Функция before-hide может вернуть
false, чтобы остановить скрытие шага. Это особенно
полезно для проверки условий:
tour.addStep({
id: 'validation-step',
text: 'Введите корректные данные для продолжения.',
buttons: [
{
text: 'Далее',
action() {
tour.next();
}
}
],
beforeHide() {
const input = document.querySelector('#user-input');
if (!input.value.trim()) {
alert('Поле не должно быть пустым!');
return false; // шаг не скрывается
}
return true; // шаг скрывается
}
});
В данном примере шаг не будет скрыт, пока пользователь не введёт
данные. Возврат false предотвращает вызов метода скрытия
шага и последующих шагов тура.
before-hide тесно интегрируется с другими событиями
шагов:
show – вызывается при отображении шага.hide – вызывается после фактического скрытия шага.cancel – срабатывает при отмене шага или тура.Использование before-hide позволяет поместить
логику проверки и подготовки прямо перед скрытием, оставляя
hide для выполнения последующих действий, например анимации
или записи состояния шага.
before-hide для логики, требующей
синхронного выполнения.false не работает с
асинхронными функциями.before-hide.before-hide является мощным механизмом контроля
поведения шагов в Shepherd.js. Он обеспечивает точку
вмешательства перед скрытием шага, что позволяет управлять
потоком пользователя, проводить валидацию, выполнять подготовку
интерфейса и интегрировать аналитику без вмешательства в основной поток
туров.
Это событие делает туры в Shepherd.js гибкими и позволяет создавать интерактивные, управляемые и надёжные пользовательские гиды.