Cytoscape.js: 强制中键点击行为与左键点击相同

Cytoscape.js: Force middle-click to behave as left-click

启用 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 实例中触发的左键单击事件。

有人知道这是否可行吗?

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

特别是中键点击,考虑 device/OS 支持:

  • Linux: 少数小鼠
  • Mac: 没有
  • Windows桌面:少数老鼠
  • Windows触摸:没有
  • iOS: 没有
  • Android: 没有

即使您只支持桌面设备,您仍然只能通过中键点击来支持少数用户。

一种更具包容性的方法是切换平移模式和 select 模式,默认模式为 select。

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