В библиотеке Intro.js логирование событий является важным инструментом для отслеживания действий пользователя во время интерактивного тура. Встроенные события позволяют регистрировать каждый этап, реагировать на начало и завершение шагов, а также получать детальную информацию о взаимодействиях пользователя с интерфейсом.
Intro.js предоставляет несколько ключевых событий, которые можно использовать для логирования:
onbeforechange(targetElement) Вызывается перед
переходом к следующему шагу. Параметр:
targetElement – DOM-элемент текущего шага.
Применение: можно проверять состояние элементов,
записывать их состояние перед показом следующего шага.
onchange(targetElement) Срабатывает после
перехода к новому шагу. Параметр:
targetElement – DOM-элемент нового шага.
Применение: логировать факт перехода, фиксировать время
появления шага, собирать метрики вовлеченности.
oncomplete() Вызывается после завершения тура. Применение: фиксация полного прохождения пользователем, отправка данных на сервер, обновление пользовательских метрик.
onexit() Срабатывает при принудительном завершении тура (например, при закрытии пользователем). Применение: логировать незавершенные действия, учитывать шаги, на которых пользователь покинул интерактивное руководство.
onbeforechange/ondestroy/onafterchange Дополнительные события позволяют реализовать расширенные сценарии логирования, например, запись данных о том, какой элемент был на экране, и что было выполнено до перехода.
Для эффективного логирования событий в Intro.js используется синтаксис с функциями обратного вызова:
introJs()
.onbeforechange(function(targetElement) {
console.log('Перед шагом:', targetElement.id);
})
.onchange(function(targetElement) {
console.log('Показан шаг:', targetElement.id, 'время:', new Date().toISOString());
})
.onexit(function() {
console.log('Тур завершен пользователем досрочно');
})
.oncomplete(function() {
console.log('Тур завершен полностью');
})
.start();
В этом примере ключевым моментом является использование
targetElement.id или других атрибутов
элемента для идентификации шагов.
Для аналитики важно фиксировать не только факт показа шага, но и время взаимодействия с каждым элементом. Для этого можно использовать комбинацию событий onchange и таймера:
let stepStartTime;
introJs()
.onchange(function(targetElement) {
if (stepStartTime) {
const duration = Date.now() - stepStartTime;
console.log(`Время на предыдущем шаге: ${duration} мс`);
}
stepStartTime = Date.now();
console.log('Новый шаг:', targetElement.id);
});
Такой подход позволяет строить тепловые карты взаимодействий, выявлять сложные шаги и оптимизировать последовательность элементов тура.
Intro.js легко интегрируется с системами аналитики, такими как Google Analytics, Mixpanel или собственные серверные логеры. Например, отправка данных о шаге на сервер:
introJs()
.onchange(function(targetElement) {
fetch('/log-tour-step', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
stepId: targetElement.id,
timestamp: new Date().toISOString()
})
});
});
Это позволяет вести централизованный учет всех действий пользователей, анализировать поведение и выявлять проблемные места в интерфейсе.
Intro.js позволяет отслеживать не только переходы шагов, но и попытки взаимодействия с элементами, которые находятся вне тура. Это делается через собственные обработчики событий DOM и интеграцию с onbeforechange/onchange:
document.querySelector('#button').addEventListener('click', () => {
console.log('Пользователь кликнул кнопку вне шага тура');
});
Комбинируя внутренние события Intro.js с внешними событиями DOM, можно получать полную картину пользовательского поведения.
Эти методы позволяют создать полнофункциональную систему логирования, которая делает интерактивные туры информативными и управляемыми.