Библиотека Intro.js предоставляет возможность создавать интерактивные пошаговые руководства для веб-приложений. Одной из ключевых особенностей является возможность получать возвращаемые значения из взаимодействия пользователя с руководством. Эти значения позволяют программно отслеживать прогресс пользователя, реагировать на события завершения шага или всего тура, а также интегрировать логику в существующую систему.
start()Метод start() инициирует тур и возвращает объект, через
который можно отслеживать состояние. Например:
var tour = introJs();
var instance = tour.start();
Возвращаемое значение instance — это объект типа
IntroJs, обладающий методами для дальнейшего управления
туром, такими как nextStep(), goToStep(),
exit().
exit()Метод exit() завершает текущий тур. Возвращаемое
значение отсутствует (undefined), однако событие завершения
можно отследить через oncomplete или
onexit.
tour.onexit(function() {
console.log("Тур был прерван пользователем");
});
tour.exit();
goToStep(number)Позволяет перейти к определенному шагу. Возвращаемое значение — объект IntroJs, что позволяет строить цепочки вызовов:
tour.goToStep(3).start();
Это обеспечивает возможность динамического управления последовательностью шагов на основе логики приложения.
Объект, возвращаемый start(), содержит внутреннее
состояние тура, которое можно использовать для получения информации о
текущем шаге:
currentStep() — номер текущего шага.currentElement() — DOM-элемент текущего шага.isActive() — флаг, указывающий, активен ли тур.Пример использования:
var instance = introJs().start();
console.log("Текущий шаг:", instance.currentStep());
console.log("Активен ли тур?", instance.isActive());
Intro.js позволяет подписываться на события, которые возвращают полезные данные:
onchange — вызывается при переходе на
новый шаг. Аргумент функции — объект с информацией о шаге:tour.onchange(function(targetElement) {
console.log("Переход к шагу:", targetElement);
});
onbeforechange — позволяет прервать
или модифицировать переход. Возвращаемое значение функции может быть
false, чтобы остановить движение тура:tour.onbeforechange(function(targetElement) {
if (!userAllowed) return false;
});
oncomplete — вызывается после
успешного завершения тура, возвращает объект тура:tour.oncomplete(function() {
console.log("Тур завершен");
});
onexit — вызывается при досрочном
завершении, возвращает объект с текущим шагом:tour.onexit(function() {
console.log("Тур прерван на шаге:", tour.currentStep());
});
Intro.js поддерживает асинхронные функции для обработки шагов, где
можно использовать async/await для управления логикой:
tour.onbeforechange(async function(targetElement) {
const allow = await checkUserPermission();
return allow;
});
Здесь возвращаемое значение функции определяет, разрешён ли переход к следующему шагу.
Объект IntroJs, возвращаемый большинством методов, поддерживает fluent-интерфейс, что позволяет строить цепочки:
introJs()
.setOptions({ showStepNumbers: true })
.onchange(handleChange)
.start()
.nextStep();
Каждый метод возвращает объект IntroJs, что упрощает работу с возвращаемыми значениями и позволяет программно управлять туром без необходимости хранить множество отдельных переменных.
Для шагов, где используется custom tooltip, можно получать данные из пользовательских элементов формы:
introJs()
.setOptions({
steps: [
{
element: '#input-name',
intro: '<input id="nameField" type="text">'
}
]
})
.onafterchange(function(targetElement) {
const value = document.querySelector('#nameField').value;
console.log("Введенное значение:", value);
})
.start();
Таким образом, возвращаемое значение фактически формируется динамически на основе DOM, что расширяет возможности интеграции туров с приложением.
currentStep()
позволяет сохранять шаг в базе данных или локальном хранилище.onbeforechange с
возвращаемым false блокирует шаги при несоблюдении
условий.onafterchange
предоставляет доступ к введенным пользователем данным.Возвращаемые значения в Intro.js являются центральным механизмом для построения интерактивных, адаптивных и управляемых туров в веб-приложениях, обеспечивая гибкую интеграцию с пользовательской логикой и интерфейсом.