Как правильно подойти к вопросу: переход по ссылке с параметром на конкретный узел в vis.js?
Ссылка скопирована
По вводным: я использую vis.js библиотеку Javascript. Как сделать так, чтобы при переходе по ссылке с параметром попадать на конкретный узел, при этом он выделен, в масштабе и по центру экрана.
Нужно решить такую задачу?
Заказать помощь
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Лучший ответ
1
Другие ответы (0)
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопроскомментарий
Вам также может быть интересно
Pyrogram
Как правильно зарегистрировать юзер бота в Telegram?
1 ответ
печатные-платы
Как заставить запускаться программу M3.exe от компании Hanxing AOI в инспекционной машине на Windows 7 Pro?
1 ответ
VPN
Как правильно настроить vless для Android TV?
1 ответ
Visual Studio Code
Как лучше убрать тень у панели слева в VS Code?
1 ответ

В vis.js переход по ссылке с параметром на конкретный узел делается через чтение параметра из URL и вызов методов network после инициализации графа. Обычно нужно найти node id, сфокусировать его, выделить и при необходимости открыть карточку/tooltip.
Пример URL:
/graph.html?node=123
JavaScript:
const params = new URLSearchParams(window.location.search); const nodeId = params.get('node'); network.once('afterDrawing', function () { if (!nodeId) return; network.selectNodes([nodeId]); network.focus(nodeId, { scale: 1.2, animation: { duration: 600, easingFunction: 'easeInOutQuad' } }); });const params = new URLSearchParams(window.location.search); const nodeId = params.get('node'); network.once('afterDrawing', function () { if (!nodeId) return; network.selectNodes([nodeId]); network.focus(nodeId, { scale: 1.2, animation: { duration: 600, easingFunction: 'easeInOutQuad' } }); });
Важно, чтобы id в URL совпадал с id узла в данных. Если у вас числовые ID, а из URL приходит строка, приведите тип:
const nodeId = Number(params.get('node'));const nodeId = Number(params.get('node'));
Если данные графа подгружаются асинхронно, фокус нужно делать после загрузки nodes/edges и создания network. Иначе метод выполнится раньше, чем узел появится.
Для удобства можно обновлять URL при клике по узлу:
network.on('selectNode', function (event) { const id = event.nodes[0]; const url = new URL(window.location.href); url.searchParams.set('node', id); history.replaceState(null, '', url); });network.on('selectNode', function (event) { const id = event.nodes[0]; const url = new URL(window.location.href); url.searchParams.set('node', id); history.replaceState(null, '', url); });
Если узлов много и они подгружаются с сервера, добавьте отдельную проверку: если нужного id ещё нет в dataset, сначала загрузите нужный фрагмент графа, а уже потом вызывайте
focus. Иначе код будет корректный, но визуально ничего не произойдёт.Для удобства пользователя можно дополнительно подсветить выбранный узел через группу, цвет или временное изменение стиля. Только не забывайте возвращать стиль обратно при выборе другого узла, чтобы граф не превращался в набор “вечных” подсветок.
Итог: передавайте id узла в query string, после готовности графа вызывайте
selectNodesиfocus. Если не работает, проверьте тип id, момент инициализации, наличие узла в dataset и то, загружены ли данные до вызова фокуса.