Rob*_*Rob 4 javascript vis.js vis.js-network
是否可以让超链接在边缘工作?
例如,我有两个连接的节点,并且上面有一个标签
{ id: 1601, label: 'label', x: -1085, y: -429, url: 'link' },
Run Code Online (Sandbox Code Playgroud)
因此,对于上述内容,使用此选项时,该 url 适用于节点
network.on("selectNode", function (params) {
if (params.nodes.length === 1) {
var node = nodes.get(params.nodes[0]);
window.open(node.url, '_blank');
}
});
Run Code Online (Sandbox Code Playgroud)
现在我使用标准配置在两个节点之间建立了链接
{ from: 1600, to: 1613, label: "label value" },
Run Code Online (Sandbox Code Playgroud)
是否可以让超级链接在连接两个节点的线/边上工作?
基本上,在代码中将“节点”更改为“边缘”可以在选择边缘时打开 url。但是,选择一个节点也会导致选择所有相邻的边。您只会收到一个selectEdge回调,但在任何情况下都可能想忽略它。如果您想排除某人选择节点的情况,而恰好只有一个连接的边,则添加一项检查,如下所示:
network.on("selectEdge", function(params) {
if ((params.edges.length == 1) && (params.nodes.length == 0)) {
var edgeId = params.edges[0];
window.open(edges.get(edgeId).url, '_blank');
}
});
Run Code Online (Sandbox Code Playgroud)
为此使用“select”仍然存在问题。如果您之前选择了一个节点,则会选择相邻的边,即使您由于上述检查而看不到它。如果您随后单击这些相邻边缘之一,则不会收到回调,因为该边缘已被选中。使用该network.on("click" ... )方法可能会更好:
network.on("click", function(params) {
if (params.nodes.length == 1) {
var nodeId = params.nodes[0];
if (nodes.get(nodeId).url != null) {
window.open(nodes.get(nodeId).url, '_blank');
}
} else if (params.edges.length==1) {
var edgeId = params.edges[0];
if (edges.get(edgeId).url != null) {
window.open(edges.get(edgeId).url, '_blank');
}
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1087 次 |
| 最近记录: |