我搜索了很多,似乎找不到满意的解决方案。我希望有人可以提供帮助。
当我使用jQuery时,我也在编写数千行Javascript。所以“纯粹的”JavaScript解决方案就好了。
我正在尝试确定控制键是否在物理上按住鼠标事件。而已;没有其他先决条件。有没有人知道如何可靠,跨浏览器?
我已经尝试通过记下按下和释放按键时将其存储在状态变量中:
// 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);
}
任何帮助都将不胜感激。
答案 0 :(得分:32)
您可以使用event.ctrlKey属性。
$(function(){
$('#elementId').mouseup(function(e){
var isCtrlPressed = e.ctrlKey;
// true or false whether ctrl is pressed or not
});
});
检查正在运行的示例here。