Cytoscape.js:强制中键单击以表现为左键单击

时间:2016-08-03 01:10:27

标签: javascript cytoscape.js

是否可以允许鼠标中键单击以拖动节点和边缘,类似于启用userPanning时左键单击通常执行的操作?我的应用程序几乎不需要平移,所以我希望默认行为是框选择,并且只允许在中键单击时进行平移。

我尝试捕获所有中间点击事件,而是触发左键点击,其中包含以下代码的多种变体(jsfiddle):

cy.userPanningEnabled(false); //no panning by default
cy.boxSelectionEnabled(true); //box selection instead

$('#cy').on('mousedown', function(e) {

  if (e.which == 2) {
    // Middle click.
    cy.userPanningEnabled(true);
    // ..some code here to replicate left-click event, such as conceptually:
    // e.which = 1; $('#cy').trigger(e); 
  } else {
    cy.userPanningEnabled(false);
  }

});

然而,无论我如何尝试,我似乎无法复制在cytoscape.js实例中触发的左键单击事件。

有谁知道这是否可行?

1 个答案:

答案 0 :(得分:1)

无法保证何时执行手势检查。这意味着您无法在手势事件序列期间可靠地禁用平移。

至于中间点击,请考虑设备/操作系统支持:

  • Linux:少数老鼠
  • Mac:没有
  • Windows桌面:少数老鼠
  • Windows touch:否
  • iOS:没有
  • Android:没有

即使您只支持桌面设备,依靠中间点击仍然只支持少数用户。

更具包容性的方法是在平移模式和选择模式下进行切换,默认选择模式。

虽然我不建议使用中间点击,但如果您真的想要,可以使用它来编写自己的手势。平移逻辑非常简单,尤其是cy.panBy()