Javascript检测控制键在鼠标上

我搜索了很多,似乎找不到令人满意的解决方案。我希望有人能帮忙。

在我使用jQuery的时候,我也写了数千行JavaScript。所以一个“纯”的javascript解决方案就好了。

我正在尝试确定控制键是否在一个mouseup事件上被物理按下。而已;没有其他先决条件。有谁知道如何做到这一点可靠,跨浏览器?

我尝试将这个存储在一个状态变量中,注意按键和释放键:

// BEGIN store control key status in hash_state
$().bind('keydown','ctrl',function( arg_obj_e ){
  hash_state.sw_ctrldn = true;
  console.debug( hash_state.sw_ctrldn );
});
$().bind('keyup','ctrl',function( arg_obj_e ){
  hash_state.sw_ctrldn = false;
  console.debug( hash_state.sw_ctrldn );
});
// END store control key status in hash_state

但是,这真的不行。如果您使用firebug测试并观看控制台,您将看到自动重复似乎发生,并且值切换。

我检查了mouseup事件,看看有没有什么有用的,但没有用:

var debugEvent = function( arg_obj_e ){
  var str = '';
  for ( var attr in arg_obj_e ){
    str += attr + ': ' + arg_obj_e[attr] + '\n';
  }
  console.debug(str);
}

任何帮助将不胜感激。

您可以使用event.ctrlKey属性。

$(function(){
  $('#elementId').mouseup(function(e){
    var isCtrlPressed = e.ctrlKey;
    // true or false whether ctrl is pressed or not 
  });
});

检查运行的示例here

翻译自:https://stackoverflow.com/questions/1210547/javascript-detect-control-key-held-on-mouseup

转载注明原文:Javascript检测控制键在鼠标上