Метод moveNext используется для программного перехода к
следующему шагу тура. Он является ключевым инструментом управления
последовательностью шагов, особенно в сценариях, где требуется
динамическое или условное продвижение по интерфейсу.
В основе работы Driver.js лежит концепция пошагового сценария
(steps), где каждый шаг описывает элемент интерфейса и сопровождающее
его пояснение. По умолчанию переход между шагами осуществляется через
встроенные элементы управления (кнопки Next/Previous), однако
moveNext позволяет:
driver.moveNext();
Метод не принимает аргументов и не возвращает значения. Он изменяет внутреннее состояние экземпляра Driver, переводя его к следующему шагу.
import Driver from "driver.js";
import "driver.js/dist/driver.css";
const driver = new Driver({
steps: [
{
element: "#step1",
popover: {
title: "Шаг 1",
description: "Описание первого шага"
}
},
{
element: "#step2",
popover: {
title: "Шаг 2",
description: "Описание второго шага"
}
}
]
});
driver.start();
// Переход к следующему шагу
driver.moveNext();
Одно из основных применений moveNext — реакция на
пользовательские действия:
document.querySelector("#continueBtn").addEventListener("click", () => {
driver.moveNext();
});
Такой подход позволяет отказаться от стандартных кнопок управления и полностью контролировать UX.
Driver.js предоставляет набор хуков, которые позволяют вмешиваться в
жизненный цикл шага. moveNext может вызываться внутри этих
хуков для автоматизации переходов.
const driver = new Driver({
steps: [
{
element: "#autoStep",
popover: {
title: "Авто-переход",
description: "Через 2 секунды произойдет переход"
},
onHighlightStarted: () => {
setTimeout(() => {
driver.moveNext();
}, 2000);
}
}
]
});
Метод позволяет реализовывать нелинейную логику:
if (user.isAuthorized) {
driver.moveNext();
} else {
console.log("Пользователь не авторизован");
}
Также можно комбинировать с другими методами управления, например
movePrevious или goTo.
В реальных приложениях часто требуется дождаться завершения операции перед переходом:
async function handleStep() {
await fetchData();
driver.moveNext();
}
Важно учитывать, что Driver.js не отслеживает асинхронность автоматически — управление полностью ложится на разработчика.
Driver.js позволяет отключить стандартные кнопки и реализовать собственные:
const driver = new Driver({
showButtons: false,
steps: [
{
element: "#custom",
popover: {
title: "Кастомный шаг",
description: "Используется внешняя кнопка"
}
}
]
});
document.querySelector("#nextStep").addEventListener("click", () => {
driver.moveNext();
});
Если moveNext вызывается на последнем шаге:
onReset
или onDestroyed, в зависимости от конфигурации)Это важно учитывать при построении логики завершения:
driver.moveNext(); // на последнем шаге завершит тур
Метод часто используется в SPA (React, Vue, Angular) для синхронизации с состоянием интерфейса:
watch(currentStep, (newValue) => {
if (newValue === "next") {
driver.moveNext();
}
});
driver.moveNext(); // ошибка, если driver.start() не был вызван
const next = driver.moveNext;
next(); // может вызвать ошибку из-за потери контекста
Решение:
driver.moveNext.bind(driver)();
movePrevious() — переход к предыдущему шагуgoTo(index) — переход к конкретному шагуreset() — завершение тураstart() — запуск тураПереход после выполнения действия:
form.addEventListener("submit", () => {
driver.moveNext();
});
Переход после достижения цели:
if (score >= 100) {
driver.moveNext();
}
if (input.value !== "") {
driver.moveNext();
}
Метод moveNext предоставляет полный контроль над
навигацией в Driver.js, превращая линейный сценарий в гибкую,
управляемую систему взаимодействия с интерфейсом.