Wie Sie verhindern, dass d3 auslösen ziehen Sie auf der rechten Maustaste?

Ich habe einige ziehen Verhalten, dass wie erwartet funktioniert wie folgt (code in CoffeeScript):

nodeDrag = d3.behavior.drag()
  .on("dragstart", (d, i) ->
    force.stop())
  .on("drag", (d, i) ->
    d.px += d3.event.dx
    d.py += d3.event.dy
    d.x += d3.event.dx
    d.y += d3.event.dy
    tick())
  .on("dragend", (d, i) -> 
    force.resume()
    d.fixed = true
    tick())

//...

nodes = vis.selectAll(".node")
  .data(graph.nodes)
  .enter()
    .append("g")
    //...
    .call(nodeDrag)

Ich jetzt versuchen, erstellen Sie benutzerdefinierte Verhalten für rechts-Klicks auf die Knoten. Allerdings löst dies "dragstart" und "ziehen", das heißt, nach ich nenne e.preventDefault() auf die "contextmenu" Veranstaltung, die Knoten in Frage ist, klebte an meine Maus Zeiger und folgt ihm herum, bis ich eine andere (Links) klicken Sie zu zwingen, ein release (ich nehme an e.preventDefault() auch verursacht, "dragend" nie Feuer).

Fand ich eine kurze Diskussion zu diesem Thema in einem Google Groups thread auf und ein Diskussion in d3 Probleme auf Github. Allerdings kann ich nicht herausfinden, aus diesen Kommentaren, wie um zu verhindern, dass dieses Verhalten.

Wie kann ich nicht den Auslöser ziehen auf der rechten Maustaste?

  • In der dragstart Veranstaltung, die Sie überprüfen könnten, ob die Rechte Maus-Taste geklickt wurde (mit d3.Ereignis) und wenn dem so ist, nicht nennen force.stop().
  • Wie kann ich prüfen, welche Maustaste geklickt wurde, in d3.event? Alle Vorschläge, die ich finden kann, wie which, button und keyCode mir undefined. Abgesehen davon: ich nenne force.stop() zu stoppen, der layout-Algorithmus, während der Benutzer mit der Maus ziehen. Also nicht aufrufen, es wird nicht verhindern, dass die drag-Geste geschieht.
  • Ich denke d3.event hat ein Mitglied sourceEvent oder so etwas, das gibt Ihnen Zugang zu der eigentlichen Veranstaltung. Und ja, du brauchst so etwas wie preventDefault() als gut.
InformationsquelleAutor notan3xit | 2013-06-14
Schreibe einen Kommentar