Javascript 多个按键的查找表
我正在尝试创建一个查找表,因为我要处理大量的键来处理我的键功能。到目前为止,我已经能够处理单键按下,如下所示:Javascript 多个按键的查找表,javascript,Javascript,我正在尝试创建一个查找表,因为我要处理大量的键来处理我的键功能。到目前为止,我已经能够处理单键按下,如下所示: (function(){ document.body.addEventListener('keydown',keysHandler,false); var keyLookUp = {37:leftKey,39:rightKey,40:DownKey...etc} function keysHandler(e){ even
(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+left键
如何修改上述代码以处理多个按键[例如]按下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和keydup,请参见Yaa我已经研究过这个问题了……它比我想象的要复杂……不过对于您的洞察力来说。。