2016-08-03 2 views
0

Ist es möglich, mit einem Mausklick die Knoten und Kanten in der gleichen Weise zu ziehen, wie es normalerweise mit Linksklick geschieht, wenn userPanning aktiviert ist? Meine App benötigt fast nie ein Panning. Daher möchte ich, dass das Standardverhalten die Boxauswahl ist und nur das Verschieben mit der mittleren Maustaste zulässig ist.Cytoscape.js: Erzwingen Sie die mittlere Maustaste, um sich wie ein Linksklick zu verhalten

ich versucht habe, unter allen mittleren Maustaste Ereignisse und stattdessen auslösen einen Linksklick mit vielen Variationen des Codes zu fangen (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); 
    } 

}); 

, aber egal, wie ich es versuchen, ich kann nicht scheinen das Linksklick-Ereignis zu replizieren, das in der cytoscape.js-Instanz ausgelöst wurde.

Weiß jemand, ob dies machbar ist?

Antwort

1

Es gibt keine Garantie dafür, wenn Gestenprüfungen durchgeführt werden. Das bedeutet, dass Sie das Schwenken während einer Gestenereignissequenz nicht zuverlässig deaktivieren können.

  • Linux: Minderheit von Mäusen
  • Mac: keine
  • Windows-Desktop: Minderheit von Mäusen
  • Windows-touch: keine

    Wie insbesondere für Mittelklick, Geräte-/OS-Unterstützung prüfen

  • iOS: nein
  • Android: keine

Auch wenn Sie nur Desktopgeräte unterstützen, würden Sie immer noch nur eine Minderheit von Benutzern unterstützen, indem Sie auf den mittleren Klick klicken.

Ein umfassenderer Ansatz wäre eine Umschaltfunktion für den Schwenkmodus und den Auswahlmodus mit dem Standardmodus für den Auswahlmodus.

Obwohl ich nicht rate, wenn Sie mit der mittleren Maustaste klicken, können Sie Ihre eigene Geste verwenden, wenn Sie es wirklich wollen. Panning-Logik ist ziemlich einfach, vor allem mit cy.panBy().

+0

Danke, @maxkfranz - Sie haben mich überzeugt. – Banana

Verwandte Themen