Метод onDestroyed является одним из ключевых коллбеков в
библиотеке Driver.js, предназначенной для создания
интерактивных пошаговых руководств по пользовательскому интерфейсу. Он
срабатывает после завершения работы Driver.js, когда
все шаги пройдены или когда тур был прерван программно. Использование
onDestroyed позволяет выполнять операции очистки,
логирование или запуск дополнительных действий после завершения
интерактивного гида.
driver.onDestroyed(function() {
// Код, который выполняется после разрушения Driver.js
});
Параметров функция обратного вызова не принимает. Внутри функции можно обращаться к состоянию приложения, к элементам DOM, управлять событиями или выполнять действия аналитики.
driver.onDestroyed(() => {
const highlightedElements = document.querySelectorAll('.driver-highlighted');
highlightedElements.forEach(el => {
el.classList.remove('driver-highlighted');
});
});
driver.onDestroyed(() => {
console.log('Тур завершен');
analytics.track('tour_completed');
});
driver.onDestroyed(() => {
document.querySelector('#main-menu').style.display = 'block';
});
onDestroyed тесно связан с методами
start(),
reset(), и
destroy():
start() инициирует тур. Коллбек
onDestroyed вызовется только после завершения всех
шагов.reset() возвращает Driver.js к исходному состоянию без
срабатывания onDestroyed.destroy() полностью удаляет экземпляр Driver.js и
вызывает onDestroyed.Пример:
const driver = new Driver({
animate: true
});
driver.defineSteps([
{
element: '#step1',
popover: {
title: 'Первый шаг',
description: 'Описание первого шага'
}
},
{
element: '#step2',
popover: {
title: 'Второй шаг',
description: 'Описание второго шага'
}
}
]);
driver.onDestroyed(() => {
console.log('Экземпляр Driver.js уничтожен');
});
driver.start();
Если пользователь закроет тур досрочно, например через
driver.destroy(), onDestroyed все равно будет
выполнен.
onDestroyed срабатывает независимо от того, завершен тур
полностью или прерван.onReset и
onNext — это позволяет реализовать комплексное
управление логикой интерактивного руководства.requestAnimationFrame или setTimeout для
отложенного выполнения, чтобы не блокировать UI.const driver = new Driver({
opacity: 0.7,
allowClose: true
});
driver.defineSteps([
{
element: '#nav',
popover: {
title: 'Навигация',
description: 'Здесь находится меню сайта'
}
},
{
element: '#content',
popover: {
title: 'Контент',
description: 'Основная информация отображается здесь'
}
}
]);
driver.onDestroyed(() => {
// Очистка стилей
document.querySelectorAll('.driver-highlighted').forEach(el => {
el.classList.remove('driver-highlighted');
});
// Логирование
console.log('Тур завершен пользователем');
// Активация скрытого блока
document.querySelector('#feedback-form').style.display = 'block';
});
driver.start();
В этом примере onDestroyed обеспечивает полное
восстановление интерфейса и логирование независимо от того, прошел ли
пользователь весь тур или закрыл его досрочно.
Метод onDestroyed является незаменимым
инструментом для контроля завершения интерактивного гида и
гарантирует, что любые побочные эффекты тура будут корректно обработаны
после его завершения.