Метод moveTo используется для программного перехода к
определённому шагу или элементу в процессе работы с интерактивным туром.
В отличие от автоматического прохождения шагов, он предоставляет полный
контроль над навигацией, позволяя динамически изменять поведение
интерфейса.
moveTo применяется в случаях, когда требуется:
driver.moveTo(index)
или
driver.moveTo(stepId)
index — числовой индекс шага (начиная с 0)stepId — строковый идентификатор шага (если задан)Каждый шаг в Driver.js имеет порядковый номер. Метод позволяет перейти к любому шагу напрямую:
driver.moveTo(2);
В этом случае произойдёт переход к третьему шагу.
Шаги могут содержать уникальный id, что делает код более
устойчивым:
const driver = new Driver({
steps: [
{
id: "step-login",
element: "#login",
popover: {
title: "Вход",
description: "Введите логин"
}
},
{
id: "step-password",
element: "#password",
popover: {
title: "Пароль",
description: "Введите пароль"
}
}
]
});
Переход:
driver.moveTo("step-password");
idПри вызове moveTo происходит:
Driver.js гарантирует корректное переключение даже при активных анимациях.
if (user.isAdmin) {
driver.moveTo("admin-panel");
} else {
driver.moveTo("user-dashboard");
}
Позволяет адаптировать тур под роль пользователя.
document.querySelector("#next-btn").addEventListener("click", () => {
driver.moveTo(3);
});
Тур синхронизируется с действиями в интерфейсе.
form.addEventListener("submit", (e) => {
e.preventDefault();
driver.moveTo("confirmation");
});
Переход к следующему шагу после успешного действия.
driver.moveTo(currentStepIndex - 1);
Реализация пользовательских кнопок “Назад”.
При добавлении шагов на лету важно учитывать:
Пример:
steps.push({
id: "dynamic-step",
element: "#dynamic",
popover: {
title: "Динамика",
description: "Этот шаг добавлен позже"
}
});
driver.moveTo("dynamic-step");
driver.moveTo(999); // ошибка
Рекомендуется проверять:
if (steps[999]) {
driver.moveTo(999);
}
Если элемент не найден:
Решение:
const el = document.querySelector("#target");
if (el) {
driver.moveTo("step-id");
}
При работе с динамическими интерфейсами:
setTimeout(() => {
driver.moveTo("loaded-step");
}, 500);
Или через MutationObserver.
startdriver.start();
driver.moveTo(1);
highlightdriver.highlight({
element: "#special"
});
driver.moveTo("next-step");
resetdriver.reset();
driver.moveTo(0);
Создание собственного интерфейса управления туром:
const next = () => {
driver.moveTo(current + 1);
};
const prev = () => {
driver.moveTo(current - 1);
};
moveTo не запускает тур автоматически — требуется
startid вместо индексовconst driver = new Driver({
steps: [
{ id: "step1", element: "#a", popover: { title: "A" } },
{ id: "step2", element: "#b", popover: { title: "B" } },
{ id: "step3", element: "#c", popover: { title: "C" } }
]
});
driver.start();
// переход через 2 секунды
setTimeout(() => {
driver.moveTo("step3");
}, 2000);
const TourController = {
goTo: (step) => driver.moveTo(step),
next: () => driver.moveTo(current + 1),
prev: () => driver.moveTo(current - 1)
};
router.onChange((route) => {
if (route === "/dashboard") {
driver.moveTo("dashboard-step");
}
});
Метод moveTo является ключевым инструментом для
построения гибких, управляемых и адаптивных туров, позволяя полностью
контролировать пользовательский сценарий взаимодействия.