Кнопка Complete в библиотеке Shepherd.js завершает
выполнение текущего тура. В отличие от кнопки перехода к следующему шагу
(Next), она не просто перемещает пользователя дальше, а
инициирует финализацию всей последовательности шагов с последующим
вызовом соответствующих обработчиков.
Внутренне действие кнопки Complete связано с методом
tour.complete(), который:
complete)Кнопка Complete добавляется в конфигурацию шага через
массив buttons:
const tour = new Shepherd.Tour();
tour.addStep({
title: 'Финальный шаг',
text: 'Тур завершён',
buttons: [
{
text: 'Завершить',
action: tour.complete
}
]
});
В данном примере:
text определяет текст кнопкиaction указывает на метод завершения тураNext и
CancelNext
tour.next()Cancel
tour.cancel()cancelComplete
tour.complete()completeТаким образом, Complete используется только на финальном
шаге или в ситуациях, где требуется принудительное завершение
сценария.
Часто кнопка Complete используется вместе с другими
действиями:
tour.addStep({
title: 'Финал',
text: 'Вы можете завершить или вернуться назад',
buttons: [
{
text: 'Назад',
action: tour.back
},
{
text: 'Завершить',
action: tour.complete
}
]
});
Это позволяет пользователю:
Кнопка Complete может выполнять дополнительные действия
перед завершением:
tour.addStep({
title: 'Финальный шаг',
buttons: [
{
text: 'Завершить',
action: function () {
console.log('Тур завершён');
tour.complete();
}
}
]
});
В этом случае:
completeShepherd предоставляет механизм подписки на события:
tour.on('complete', function () {
console.log('Тур полностью завершён');
});
Событие complete срабатывает:
Completetour.complete()Это удобно для:
Кнопка Complete — не единственный способ завершения
тура. Возможен программный вызов:
tour.complete();
Применяется в случаях:
Иногда необходимо завершать тур только при выполнении условий:
tour.addStep({
buttons: [
{
text: 'Завершить',
action: function () {
if (userHasCompletedTask()) {
tour.complete();
} else {
alert('Задача не выполнена');
}
}
}
]
});
Такая логика позволяет:
CompleteShepherd позволяет задавать CSS-классы:
{
text: 'Завершить',
action: tour.complete,
classes: 'shepherd-button-primary'
}
Или собственные классы:
{
text: 'Готово',
action: tour.complete,
classes: 'my-complete-button'
}
Это дает возможность:
Кнопка Complete обычно:
Не рекомендуется:
Complete на промежуточных шагах без
необходимостиCancel без различия поведенияПосле вызова complete():
Дополнительно можно:
1. Потеря контекста this
action: tour.complete
В некоторых случаях может потребоваться явная привязка:
action: () => tour.complete()
2. Использование Complete не на последнем
шаге Это может нарушить логику сценария и сбить
пользователя.
3. Отсутствие обработки события
complete Без этого невозможно отследить завершение
тура.
Комбинация с localStorage:
tour.on('complete', () => {
localStorage.setItem('tourCompleted', 'true');
});
Автоматическое скрытие в будущем:
if (!localStorage.getItem('tourCompleted')) {
tour.start();
}
Интеграция с аналитикой:
tour.on('complete', () => {
analytics.track('Tour Completed');
});
Кнопка Complete выполняет ключевую функцию:
Её корректное использование напрямую влияет на восприятие завершённости интерфейсного процесса и качество пользовательского опыта.