Javascript 检查按下了哪个鼠标按钮,是否是双击?
我有一张画布,可以监听鼠标按下事件。。。但我想通过听按钮,看它们是否是双击来让它更详细 我有这个:Javascript 检查按下了哪个鼠标按钮,是否是双击?,javascript,Javascript,我有一张画布,可以监听鼠标按下事件。。。但我想通过听按钮,看它们是否是双击来让它更详细 我有这个: canvas.addEventListener("mousedown", what_button, false); 然后是一个名为what_button的函数: function what_button(e){ //check which button on the mouse //was it a double click ? } 这在JavaScript中可能吗?我认为'mou
canvas.addEventListener("mousedown", what_button, false);
然后是一个名为what_button的函数:
function what_button(e){
//check which button on the mouse
//was it a double click ?
}
这在JavaScript中可能吗?我认为
'mousedown'
事件无法预测是否会发生第二次鼠标单击。您必须同时绑定到'click'
和'dblclick'
,然后在出现双击时重写该行为
在处理程序内部,e.button
属性告诉您单击了哪个按钮:
0 => left
1 => middle
2 => right
这对我很有用:
var dblclick;
var timeout;
$( document ).on( 'click', function ( e ) {
if ( !timeout ) {
timeout = setTimeout( function () {
timeout = 0;
handler( dblclick ? 'dblclick' : 'click' );
dblclick = false;
}, 200 );
}
});
$( document ).on( 'dblclick', function ( e ) {
dblclick = true;
});
// this function receives either 'click' or 'dblclick'
// and performs the corresponding action
function handler ( type ) {
alert( type );
}
现场演示:
我使用的延迟值为
200
。我发现(至少在我的机器上)值100
没有检测到双击。使用单击/dblclick
:
var button = document.getElementById('myButton');
button.ondblclick = function() {
doubleClick = true;
};
您甚至可以添加一个normalClick=false
,然后在代码中使用该信息。有一个'dblclick'
事件,您可以在该事件上将处理程序绑定到…True,但这样会同时调用鼠标下键和dbl单击?您的应用程序希望用鼠标右键双击?我想不出有哪个程序有右键双击的功能…它还没有,但我想知道我可用的选项>>对不起,没有在这里粘贴链接,你的例子是没有使用事件侦听器=/?这在画布上是如何工作的?您是指这样的事件侦听器:按钮。addEventListener('dblclick'…)
??因为它可以以相同的方式工作。是的,但这只允许dblclick,而不是/or的选项。如果dblclick==false,那么它是事件侦听器上的单击类型检查,有什么方法可以做吗?@Dave问题是当你双击,第一个'click'
处理程序在您第一次单击之后和第二次单击之前立即执行。因此,处理程序显然无法知道这是否是双击的第一次单击。(在执行第一次单击处理程序时,第二次单击尚未发生。)因此,如果我在它调用的函数中使用计时器并计算两次之间的差异,那么如果其低于某个值,则将被视为双击?Dave我已用解决方案更新了我的答案。(我使用jQuery绑定事件,但这与我的代码的功能无关。)关于鼠标按钮编号,这可能是它们应该是的,但浏览器不同意,请参阅。“左”、“右”和“中”的整个概念是错误的,它赋予按钮的空间关系以意义,而它应该基于其他一些标准(例如目的)。注意,在这本书中,它说为“配置为左手使用”的鼠标反转它们。那么“左”和“右”现在有什么意义呢?