vis.js 网络——工具提示/弹出窗口的固定位置

dur*_*ila 5 javascript networking vis.js

如何使用 javascript 在 vi​​s.js 网络中获得工具提示/弹出窗口的“固定”位置(例如节点/边缘的中心)?

现在,工具提示随着鼠标光标的移动而移动,因此无法复制工具提示中的文本!工具提示应该是“修复”而不是移动,以允许用户使用鼠标“抓住它”并复制(并粘贴)其中的文本。

这是标准的Javascript 代码,默认情况下,工具提示/弹出窗口从鼠标“跑开”。

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/vis/4.2.0/vis.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/vis/4.2.0/vis.min.css" rel="stylesheet" type="text/css" />

...
  <style type="text/css">
    #mynetwork {
      position:relative;
      width: 600px;
      height: 400px;
      border: 1px solid lightgray;
    }
<script type="text/javascript">
// create an array with nodes
var nodes = new vis.DataSet([
{id: 1, label: 'Node 1', title:'popup'},
{id: 2, label: 'Node 2', title:'popup'},
{id: 3, label: 'Node 3', title:'popup'},
{id: 4, label: 'Node 4', title:'popup'},
{id: 5, label: 'Node 5', title:'popup'}
]);

// create an array with edges
var edges = new vis.DataSet([
{from: 1, to: 3, title:'popup'},
{from: 1, to: 2, title:'popup'},
{from: 2, to: 4, title:'popup'},
{from: 2, to: 5, title:'popup'},
{from: 3, to: 3, title:'popup'}
]);

// create a network
var container = document.getElementById('mynetwork');
var data = {
nodes: nodes,
edges: edges
};
var options = {};
var network = new vis.Network(container, data, options);
</script>
Run Code Online (Sandbox Code Playgroud)

小智 0

看起来除了工具提示之外,您还需要其他东西。在这种情况下,我认为单击比悬停更好地显示弹出窗口。我建议您执行以下操作:

将 click evet 添加到您的网络,这应该会打开一个弹出窗口,您应该在 html 上设置。

network.on("click", function (params) {
    // your element, edge or node
    // set the popup position by getting the params.pointer attr
    // handle the toggle behavior  
});
Run Code Online (Sandbox Code Playgroud)

这样,您就可以完全控制弹出窗口。

看这个例子

并使用这个文档