是否可以在Cytoscape.js的节点内建立超链接

Is it possible to make hyperlinks inside nodes in Cytoscape.js?

本文关键字:节点 建立 超链接 js Cytoscape 是否      更新时间:2023-09-26

我希望用户能够单击节点内的一些文本并执行一些操作,例如显示一些对话框或打开其他窗口。这可能吗?

在文档中有类似以下内容:

text-events :如果标签收到事件,事件是否应该发生在元素上;可以是 yes 或 no。您可能希望将样式应用于 :active 上的文本,以便知道文本是可激活的。

这似乎是事情,但没有如何在标签级别使用它的示例。

编辑:示例在图表上

我如何想象它可能在代码中:

  label_element.on('tap', function(event){
     // cyTarget holds a reference to the label
     var evtTarget = event.cyTarget;
     //...
  });

  cy.on('tap', function(event){
     var evtTarget = event.cyTarget;
     //evtTarget holds element but I can somehow get the text which got tap event??
  });

根据 Cytoscape.js 文档,您可以尝试使用

cy.on('tap')

喜欢这个:例子

绑定到从与指定节点选择器匹配的元素冒泡的事件:

    cy.on('tap', 'node', { foo: 'bar' }, function(evt){
      console.log( evt.data.foo ); // 'bar'
      var node = evt.cyTarget;
      console.log( 'tapped ' + node.id() );
    });

绑定到核心接收的所有点击事件:

    cy.on('tap', function(event){
      // cyTarget holds a reference to the originator
      // of the event (core or element)
      var evtTarget = event.cyTarget;
      if( evtTarget === cy ){
          console.log('tap on background');
      } else {
        console.log('tap on some element');
      }
    });

在 http://js.cytoscape.org/#cy.on

如果text-events: yes,点击节点的标签将触发节点上的tap

如果您希望在可以独立交互的节点之上具有任意 UI,则应在 DOM 中创建一个单独的层。

理由:在Cytoscape.js中,标签相对简单,因为支持复杂的标签与DOM的复杂程度相同。 在这种情况下,最好将 DOM 用作图顶部的一层,而不是在 Cytoscape.js 中重新实现它。