2014-09-27 56 views
0

我想創建一個查找表(因爲我有大量的鍵處理)來處理我的鍵功能。到目前爲止,我已經能夠處理單按鍵,如下圖所示:多鍵查找表按

(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

如何修改上面的代碼來處理多個按鍵[如]按壓 +

的按鍵移位CtrlAlt and Alt Gr are 修飾符鍵,這意味着它們作爲您撥打e的事件的一部分發送,並分別作爲e.shiftKeye.ctrlKeye.altKeye.altGraphKey存儲。

那麼這對你意味着什麼?如果你想保持現有的結構,我認爲你有三個選擇;你可以

  1. 爲修改後的版本寫了完全不同的功能,

    keyLookUp['37sc'] = leftKeyShiftCtrl; 
    
    keyLookUp[ 
        keycode 
        + (e.shiftKey ? 's' : '') 
        + (e.ctrlKey? 'c' : '') 
        + (e.altKey ? 'a' : '') 
    ](e); 
    
  2. 看看這些值在你目前的處理程序

    // inside fn 
    if (e.shiftKey) {/* different code path */} 
    
  3. 通過這些作爲參數到您的處理程序(它需要額外的參數)

    function leftKey(e, shift, ctrl, alt) { /* ... */ } 
    
    keyLookUp[keycode](e, e.shiftKey, e.ctrlKey, e.altKey); 
    

對於任何的組合鍵,因此需要跟蹤的keydownKEYUP,看到this question

+0

雅阿我已經看了看這個問題....它變得比我想... thanx您的見解,雖然更復雜.. – 2014-09-27 14:24:14