Метод cancel является одним из ключевых инструментов
управления пошаговыми интерактивными турами в
Shepherd.js. Он позволяет прерывать текущий тур
в любой момент, очищая все связанные с ним ресурсы, скрывая
текущий шаг и предотвращая дальнейшее выполнение шагов. Это особенно
важно в сценариях, где пользователь может покинуть страницу, сменить
контекст или требуется отмена тура в ответ на определённые события.
tour.cancel();
tour — экземпляр Shepherd.Tour.Пример:
const tour = new Shepherd.Tour({
defaultStepOptions: {
scrollTo: true
}
});
tour.addStep({
id: 'intro',
text: 'Добро пожаловать в тур!',
buttons: [
{
text: 'Закрыть',
action: tour.cancel
}
]
});
tour.start();
В этом примере кнопка на шаге напрямую вызывает
tour.cancel, что обеспечивает мгновенное завершение тура
без необходимости перехода к следующему шагу.
cancel от других методов управления туром| Метод | Основное действие | Отличие |
|---|---|---|
next() |
Переход к следующему шагу | Тур продолжается |
back() |
Возврат к предыдущему шагу | Тур продолжается |
complete() |
Завершение тура после выполнения всех шагов | Выполняются колбеки onComplete |
cancel() |
Немедленное завершение тура | Прерывает тур в любой момент, выполняются колбеки
onCancel |
Ключевой момент: cancel() не выполняет
переход к следующему шагу и не активирует шаги, оставшиеся в
очереди.
Shepherd.js поддерживает событие cancel, которое
срабатывает при вызове метода cancel. Это позволяет
выполнять дополнительную логику, например, очистку состояния
интерфейса.
Пример:
const tour = new Shepherd.Tour({
defaultStepOptions: { scrollTo: true }
});
tour.on('cancel', () => {
console.log('Тур был отменён пользователем.');
// Можно сбросить состояния элементов интерфейса
});
tour.addStep({
id: 'step1',
text: 'Это первый шаг.'
});
tour.start();
// Пример отмены через код
setTimeout(() => {
tour.cancel();
}, 5000);
В данном примере тур автоматически отменяется через 5 секунд, а колбек выводит сообщение в консоль.
cancel для динамических интерфейсовВ сложных интерфейсах, где шаги тура могут динамически добавляться
или удаляться, метод cancel гарантирует:
Пример динамического удаления тура при навигации между страницами SPA:
window.addEventListener('beforeunload', () => {
if (tour) {
tour.cancel();
}
});
cancel в обработчиках событий, которые
могут прервать тур (например, закрытие модального окна или переход на
другую страницу).onCancel для восстановления
интерфейса в исходное состояние.cancel для перехода между шагами — для
этого предназначены next() и back().addStep и start
обеспечивает полную контроль над поведением интерактивного тура.cancel()
немедленно закрывает текущий шаг и удаляет все визуальные элементы.cancel: позволяет
выполнять дополнительные действия при отмене тура.Метод cancel — это универсальный инструмент для
контроля завершения интерактивных туров в Shepherd.js,
обеспечивающий безопасность и предсказуемость поведения интерфейса при
прерывании тура. Он идеально подходит для ситуаций, когда необходимо
немедленно прекратить текущую демонстрацию и очистить состояние
приложения.