我正在尝试创建一个查找表(因为我有大量要处理的键)来处理我的键功能。到目前为止,我已经能够处理单键按下,如下所示:
(function(){
document.body.addEventListener('keydown',keysHandler,false);
var keyLookUp = {37:leftKey,39:rightKey,40:DownKey...etc}
function keysHandler(e){
event = e || window.event;
var keycode = event.which || event.keyCode;
keyLookUp[keycode](e);
}
function leftKey(e){
}
function rightKey(e){
}
function DownKey(e){
}
})();
如何将上述代码修改为处理多键按下功能?比如按 Shift +左键
答案 0 :(得分:0)
如何修改上述代码以处理多键按下[例如]按 Shift + ←
键 Shift , Ctrl , Alt 和 Alt Gr 是修饰符密钥,这意味着它们是作为您致电e
的活动的一部分发送的,分别存储为e.shiftKey
,e.ctrlKey
,e.altKey
和e.altGraphKey
那么这对你意味着什么?如果你想保持目前的结构,我认为你有三个选择;你可以
为修改后的版本编写完全不同的函数,例如
keyLookUp['37sc'] = leftKeyShiftCtrl;
keyLookUp[
keycode
+ (e.shiftKey ? 's' : '')
+ (e.ctrlKey? 'c' : '')
+ (e.altKey ? 'a' : '')
](e);
在当前处理程序中查看这些值
// inside fn
if (e.shiftKey) {/* different code path */}
将这些作为参数传递给您的处理程序(需要额外的参数)
function leftKey(e, shift, ctrl, alt) { /* ... */ }
keyLookUp[keycode](e, e.shiftKey, e.ctrlKey, e.altKey);
对于任何组合键,您需要跟踪 keydown 和 keyup ,请参阅this question