【发布时间】:2018-08-08 17:18:16
【问题描述】:
我注意到当我使用d3.drag().on('drag',...) 时,即使鼠标没有移动,它也会触发。使用下面的代码 sn-p(我从 this question 提取),如果我简单地单击并释放,我仍然会在控制台中看到 drag event 1。
这是一个问题,因为我希望能够区分 dblclick 和拖动。我查看了this post 和this one,但无法让这些解决方案发挥作用(可能是因为这些是旧答案,而我使用的是 D3 v4)。我确实注意到在one of the answers 中的fiddle 中,它显示了相同的问题:点击事件和拖动事件。
我认为drag 事件只有在鼠标移动时才会被触发,然后我可以使用它来设置一个标记,将其标记为拖动,而不是双击。但是,如果在鼠标按下时触发拖动,这将不起作用。
非常愿意接受有关此建议的建议以及对 drag 为何如此行事的解释。我意识到这取决于浏览器,所以我运行的是 Chrome 64。
var count = 0;
d3.select("svg").call(d3.drag().on("start", function() {
console.log("drag started")
}).on("drag", function() {
++count;
console.log("drag event " + count)
}).on("end", function() {
count = 0;
console.log("drag ended")
}))
.as-console-wrapper { max-height: 20% !important;}
svg {
border: 1px solid black;
}
<script src="https://d3js.org/d3.v4.min.js"></script>
<svg></svg>
【问题讨论】:
标签: javascript d3.js drag-and-drop drag mousemove