是否可以获得在边缘上工作的超链接?
例如,我有两个连接的节点,并且有一个标签
{ id: 1601, label: 'label', x: -1085, y: -429, url: 'link' },
因此,对于上述内容,url在使用时适用于节点 这个选项
network.on("selectNode", function (params) {
if (params.nodes.length === 1) {
var node = nodes.get(params.nodes[0]);
window.open(node.url, '_blank');
}
});
现在我使用标准配置
在两个节点之间建立了链接{ from: 1600, to: 1613, label: "label value" },
是否有可能让huperlink在连接两个节点的线/边上工作?
答案 0 :(得分:2)
基本上,改变节点"到"边缘"在您的代码中工作以在选择边缘时打开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');
}
});
使用"选择"仍然存在问题。为了这。如果您之前选择了一个节点,则会选择相邻的边缘,即使您因为上面的检查而没有看到它。如果您随后单击其中一个相邻边,则无法获得回调,因为该边已被选中。最好使用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');
}
}
});