Библиотека Intro.js предназначена для создания пошаговых интерактивных руководств по интерфейсу веб-приложений. С течением времени её API претерпело несколько важных изменений, которые необходимо учитывать при обновлении проектов или при изучении последних версий.
Ранее, до версии 5.x, стандартный способ запуска интро выглядел так:
introJs().setOptions({
steps: [
{ element: '#step1', intro: 'Первый шаг' },
{ element: '#step2', intro: 'Второй шаг' }
],
showStepNumbers: true,
exitOnOverlayClick: false
}).start();
В версии 6.x и выше появились следующие ключевые изменения:
setOptions теперь может принимать ES6
объект конфигурации с поддержкой дополнительных опций, таких
как disableInteraction, tooltipClass,
scrollToElement.start() без предварительной инициализации
объекта Intro.js возможен, но рекомендуется создавать отдельную
переменную для повторного использования:const intro = introJs();
intro.setOptions({
steps: [
{ element: '#step1', intro: 'Первый шаг', position: 'bottom' },
{ element: '#step2', intro: 'Второй шаг', position: 'top' }
],
disableInteraction: true
});
intro.start();
showStepNumbers заменён на
showStepNumbers: true/false с поддержкой кастомизации через
CSS-класс stepNumberClass.Изменения структуры шагов:
"auto", "top",
"left"; в новых версиях можно указывать массив
предпочтительных позиций, что позволяет библиотеке автоматически
выбирать оптимальное размещение тултипа:steps: [
{ element: '#step1', intro: 'Описание', position: ['top', 'right', 'bottom'] }
]
{ element: '#step1', title: 'Заголовок шага', intro: 'Описание шага' }
В старых версиях события регистрировались через
onbeforechange, onchange,
oncomplete и т.д. В новых версиях добавлены и изменены
методы:
onbeforechange(function(targetElement) {}) – вызывается
перед переходом на шаг.onchange(function(targetElement) {}) – вызывается при
изменении шага.onafterchange(function(targetElement) {}) – новый
метод, вызывается после рендеринга тултипа, что
позволяет безопасно модифицировать DOM внутри шага.oncomplete(function() {}) – завершение интро, осталось
без изменений.onexit(function() {}) – добавлено, заменяет устаревший
onexit с другим поведением, особенно при закрытии через
клавишу ESC или клик по оверлею.Пример регистрации событий:
intro.onbeforechange(function(targetElement) {
console.log('Переход к шагу с элементом:', targetElement.id);
});
intro.onafterchange(function(targetElement) {
targetElement.style.border = '2px solid red';
});
intro.oncomplete(function() {
console.log('Интерактивное руководство завершено');
});
disableInteraction – заменяет прежние
exitOnOverlayClick и exitOnEsc для большей
гибкости. Позволяет заблокировать любые действия пользователя на фоне и
элементах, кроме кнопок управления Intro.js.
scrollToElement – новый параметр, управляет
автопрокруткой к текущему шагу. Возможные значения: true
(по умолчанию), false, или функция кастомного
скролла.
keyboardNavigation – включение или отключение навигации с клавиатуры, раньше клавиатура работала всегда.
В последних версиях изменилось поведение тултипов на мобильных устройствах:
position как массив
объектов:steps: [
{
element: '#step1',
intro: 'Описание',
position: [
{ device: 'desktop', value: 'right' },
{ device: 'mobile', value: 'bottom' }
]
}
]
С версии 6.x появилась поддержка кастомных кнопок
навигации. Старый подход через nextLabel,
prevLabel остался, но расширен за счёт:
skipLabel – текст кнопки пропуска.doneLabel – текст завершения.Пример:
intro.setOptions({
steps: [
{ element: '#step1', intro: 'Первый шаг', position: 'top' }
],
nextLabel: 'Вперед',
prevLabel: 'Назад',
skipLabel: 'Пропустить',
doneLabel: 'Готово'
});
.setOptions(),
.start()) остались совместимыми, но для полного контроля
рекомендуется создавать отдельный объект Intro.js.exitOnOverlayClick и
exitOnEsc следует заменить на
disableInteraction с корректными значениями.onchange теперь не гарантирует момент окончания
анимации тултипа; для работы после рендера необходимо использовать
onafterchange.Эти изменения делают Intro.js более гибкой и расширяемой, улучшая поддержку адаптивного дизайна и давая больше контроля над поведением интро на различных устройствах.