2015-09-03 59 views
2

問題是如何防止刷事件(brushstart,刷和brushend)被觸發,如果按下鼠標右鍵單擊。換句話說,我想讓d3筆刷只在按下鼠標左鍵或中鍵時才動作。我在這裏也沒有找到對這個問題的直接回答,也沒有通過Google的搜索找到答案。如何禁用d3.js中的右鍵刷選擇

回答

4

這是我想出來的:

var brush = d3.svg.brush() 
    .x(x) 
    .y(y) 
    .on("brush", function() { 
     //brush code 
    }) 
    .on("brushend", function() { 
     //brushend code 
    }) 

    svg.append("g") 
     .attr("class", "brush") 
     .on("mousedown", function(){ 
      if(d3.event.button === 2){ 
       d3.event.stopImmediatePropagation(); 
      }; 
     }) 
     .call(brush) 

基本上你需要調用函數刷之前,鼠標按下事件添加到「G」元素。在搜索如何做到這一點時,我已經來到了「無縮放上下文菜單」示例:http://bl.ocks.org/mbostock/6140181在弄清楚後,很容易做到我想要的。