有没有一种简单的方法可以在节点上双击 vis.js 创建超链接/javascript-action

Is there a simple way to create a hyperlink/javascript-action on a node double-click in vis.js?

本文关键字:vis 双击 节点 js 创建 javascript-action 超链接 一种 简单 方法 有没有      更新时间:2023-09-26

在 vis.js 中定义节点,http://visjs.org/network_examples.html ,如下所示:

var nodes = [
{id: 1, label: 'Node1'},
{id: 2, label: 'Node2'},
{id: 3, label: 'Node3'},
{id: 4, label: 'Node4'}
];

我想找出的是,您能否创建一个节点双击(或其他事件/单击类型)操作,如下所示:

var nodes = [
{id: 1, label: 'Node1', double-click: 'Arbitrary_OnClick_Function()'},
{id: 2, label: 'Node2', double-click: 'document.getElementById("div1").innerHTML="Node 2 was clicked"'},
{id: 3, label: 'Node3', double-click: 'https://www.google.com;target="_blank"'},
{id: 4, label: 'Node4', double-click: '#SomePageSection'}
];

也许有一种方法可以与角度.js(github.com/edgaraafelix/angular-visgraph)或非简单地通过.js方法on(event,callback)http//visjs.org/docs/network.html#Methods和 http://visjs.org/docs/network.html#Events)相结合。

因此,从您拥有节点示例的同一文档中,您最终创建了一个网络,例如

var network = new vis.Network(container, data, options);

(数据对象包含节点和边)

然后,您可以在网络上放置一个事件侦听器,并且您知道从这样的属性中单击了哪个节点

network.on( 'click', function(properties) {
    alert('clicked node ' + properties.nodes);
});

我有完全相同的需求。从西蒙的回答开始,我最终添加了以下代码:

network.on("doubleClick", function (params) {
    params.event = "[original event]";
    window.open("/myurl/?id="params.nodes[0],'_blank');
});

params.nodes[0] 是我在 url 中使用的节点的 ID。

此 visjs 页面的源代码中提供了更多示例(根据 PLG 的评论更新了链接)。

问题:我这适用于您双击的任何网络对象。我不知道如何让它只在节点上工作......