2017-03-04 104 views
0

我發現像一些解決方案:JavaScript:如何獲取箭頭鍵綁定?

function checkKey(e) { 

     e = e || window.event; 

     if (e.keyCode == '38') { 
      snakeDirection = "up"; 
     } 
     else if (e.keyCode == '40') { 
      snakeDirection = "down"; 
     } 
     else if (e.keyCode == '37') { 
      snakeDirection = "left"; 
     } 
     else if (e.keyCode == '39') { 
      snakeDirection = "right"; 
     } 
    } 

但我不知道這e也不e = e || window.event; 能有人請解釋的含義是什麼?

+0

@OusmaneDiaw我基本上沒有複製代碼..但我沒有在我的代碼(遊戲)中實現它。但是謝謝。 :) –

+0

'document.onkeydown = checkKey' – dandavis

回答

0

功能checkKey被用作事件監聽器,幾乎可以肯定用於​​事件。嘗試運行這一點,你就會明白我的意思:

window.addEventListener('keydown', checkKey) 

事件偵聽器在最現代的瀏覽器需要一個參數,該事件對象,這往往是指定e(簡稱event)。

但是,在某些舊版瀏覽器(即傳統Internet Explorer版本)中,事件對象未傳遞給偵聽器;相反,人們可以使用全局的window.event屬性來訪問它。如果您希望自己的代碼對這些瀏覽器具有靈活性,您將不得不預計e可能無法通過。這就是爲什麼行e = e || window.event存在:它基本上說「如果找不到變量e,將其設置爲window.event並繼續。」

此事件對象攜帶的屬性可幫助解釋發生的事件的具體情況。例如,​​事件對象上的屬性keyCode告訴您在鍵盤上按下了哪個鍵。然而,這些關鍵代碼的方式編號是不容易記住,因此if語句您正在使用的奇特外觀:

  • 左箭頭對應的鍵碼37
  • 向上箭頭對應的鍵碼38
  • 右箭頭對應的鍵碼39
  • 向下箭頭對應的鍵碼40