如何在 d3.js 中禁用右键单击画笔选择

How to disable brush selection on right click in d3.js

问题是在按下鼠标右键时如何防止触发画笔事件(brushstart、brush 和 brushend)。换句话说,我希望 d3 画笔仅在按下鼠标左键或鼠标中键时才起作用。无论是在这里还是通过谷歌搜索,我都没有找到这个问题的直接答案。

这是我想出的:

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"元素上添加鼠标按下事件,然后调用画笔功能。在搜索如何执行此操作时,我找到了此处显示的 "No Zoom on Context Menu" 示例:http://bl.ocks.org/mbostock/6140181 在弄清楚之后,很容易做我想做的事。