vis.js超链接边缘

时间:2017-11-22 18:18:31

标签: javascript vis.js-network vis.js

是否可以获得在边缘上工作的超链接?

例如,我有两个连接的节点,并且有一个标签

{ 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在连接两个节点的线/边上工作?

1 个答案:

答案 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');
        }           
    } 
});