Свойство isActive используется для определения текущего
состояния шага в процессе тура. Оно возвращает булево значение,
показывая, активен ли конкретный шаг в данный момент. Это позволяет
динамически контролировать визуальное и логическое поведение шагов,
особенно при сложных сценариях с условной навигацией.
const active = tour.getCurrentStep().isActive();
tour — объект Shepherd.Tour.getCurrentStep() — метод, возвращающий текущий шаг
тура.isActive() — метод шага, возвращающий
true, если шаг активен, и false, если
неактивен.Часто требуется условно выполнять действия только для активного шага:
const step = tour.getCurrentStep();
if (step.isActive()) {
console.log("Шаг активен");
} else {
console.log("Шаг неактивен");
}
Это особенно полезно при работе с динамическим контентом, когда шаг может быть создан заранее, но отображаться только в определённый момент.
isActive позволяет условно запускать анимации или
взаимодействия с элементами DOM только тогда, когда шаг активен:
const step = tour.getCurrentStep();
if (step.isActive()) {
step.show(); // показываем шаг, если он активен
document.querySelector("#highlight").classList.add("active-highlight");
} else {
document.querySelector("#highlight").classList.remove("active-highlight");
}
Таким образом обеспечивается синхронизация визуальных эффектов с реальным состоянием тура.
Методы on, once и off для
событий Shepherd.js можно комбинировать с проверкой
isActive:
tour.on('show', () => {
const step = tour.getCurrentStep();
if (step.isActive()) {
console.log("Активный шаг появился на экране");
}
});
tour.on('complete', () => {
const step = tour.getCurrentStep();
if (!step.isActive()) {
console.log("Шаг завершён и больше не активен");
}
});
Это позволяет создавать гибкие реакции на изменение состояния шага и избегать выполнения действий для неактивных элементов.
Динамическая подсветка элементов
isActive позволяет подсвечивать элементы только когда
соответствующий шаг виден, предотвращая конфликты с другими элементами
страницы.
Условная навигация Можно блокировать переход к следующему шагу, если текущий шаг не активен:
const step = tour.getCurrentStep();
if (!step.isActive()) {
tour.back(); // возвращаемся к предыдущему шагу
}
const step = tour.getCurrentStep();
if (step.isActive()) {
initializeChart("#chart-container");
}
isActive возвращает true только для шага,
который отображается в данный момент.false.false.isActive в комбинации с событиями
show и hide позволяет отслеживать переходы
между шагами и управлять динамическим содержимым.const tour = new Shepherd.Tour({
defaultStepOptions: {
classes: 'shepherd-theme-arrows',
scrollTo: true
}
});
tour.addStep({
id: 'intro',
text: 'Добро пожаловать в тур!',
attachTo: { element: '#start', on: 'bottom' },
buttons: [
{ text: 'Далее', action: tour.next }
]
});
tour.on('show', () => {
const step = tour.getCurrentStep();
if (step.isActive()) {
console.log(`Показываем шаг: ${step.id}`);
document.querySelector('#start').classList.add('highlight');
}
});
tour.on('hide', () => {
const step = tour.getCurrentStep();
if (!step.isActive()) {
document.querySelector('#start').classList.remove('highlight');
}
});
tour.start();
В этом примере проверка isActive гарантирует, что
подсветка элемента будет включена только для реально отображаемого шага,
а при скрытии — отключена.
Свойство isActive обеспечивает точный контроль состояния
шагов и позволяет создавать сложные, динамически управляемые туры без
лишнего дублирования логики или конфликтов с DOM.