Javascript检测鼠标上的控制键

Javascript检测鼠标上的控制键,javascript,jquery,javascript-events,Javascript,Jquery,Javascript Events,我找了很多,似乎找不到满意的解决办法。我希望有人能帮忙 在使用jQuery的同时,我还编写了数千行Javascript。因此,一个“纯”javascript解决方案就可以了 我试图确定在mouseup事件中是否实际按住了控制键。就这样,;没有其他先决条件。是否有人知道如何可靠地跨浏览器执行此操作 我尝试将其存储在状态变量中,方法是在按下和释放键时注意: // BEGIN store control key status in hash_state $().bind('keydown','ctrl

我找了很多,似乎找不到满意的解决办法。我希望有人能帮忙

在使用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);
}
任何帮助都将不胜感激。

您可以使用该酒店

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

查看一个正在运行的示例。

Wow,我不知道jQuery以这种方式支持关键事件。我找不到它的任何文件。另外,$().bind()(空jQuery)有效吗,还是只是简写?如果是这样,它是否绑定到$(document)?@Epileless:这种绑定来自一个名为js热键的插件。这也不会起作用,因为如果用户确实控制+F来搜索页面,那么当他们放开控制时,“查找”窗口会有焦点,因此不会触发控制键(或F键)。另外,如果你需要跟踪F键,那么你会认为它会永远关闭,而我没有解决方案。哇,我在事件调试期间寻找该属性,一定错过了。非常感谢。在FF3上像一个魔咒一样工作;现在来了解IE.You's welcome Michael,这些键修饰符(shiftKey、ctrlKey、altKey)是在2000年末在DOM Level 2标准()上引入的,并且从IE6开始就得到支持。甚至更好!我想在我的应用程序中同时使用shiftKey和altKey。我刚刚发现firefox中的ctrl鼠标滚轮默认为文本缩放,这可能适合我的用户。也许最好使用另一个键:)这些属性在被查询时必须“活灵活现”,因为仅仅迭代事件对象的属性就没有任何结果,IIRC。再次感谢。省去了很多麻烦。属性可能在原型链中