2012-05-13 3 views
0

전달, 스페이스 바 및 왼쪽 순서로 키를 누르면 매우 이상한 몇 가지 이유가 있습니다. Left는 실행되지 않고 대신 스페이스 바를 반환합니다. 다른 세 가지 키 조합은 완벽하게 작동하지만 그 중 하나는 아닙니다. 왜 그런 단서가 있니?자바 스크립트 키보드 이벤트가 실행되지 않음

var Ctrl = { 
    init: function() { 
     window.addEventListener('keydown', this.keyDown, true); 
     window.addEventListener('keyup', this.keyUp, true); 
    }, 

    keyDown: function(event) { 
     console.log(event.keyCode); 

     switch(event.keyCode) { 
      case 37: // Left 
       Ctrl.left = true; 
       break; 
      case 39: // Right 
       Ctrl.right = true; 
       break; 
      case 38: // up 
       Ctrl.up = true; 
       break; 
      case 40: // down 
       Ctrl.down = true; 
       break; 
      case 32: 
       Ctrl.space = true; 
       break; 
      default: 
       break; 
     } 
    }, 

    keyUp: function(event) { 

     switch(event.keyCode) { 
      case 37: // Left 
       Ctrl.left = false; 
       break; 
      case 39: // Right 
       Ctrl.right = false; 
       break; 
      case 38: 
       Ctrl.up = false; 
       break; 
      case 40: 
       Ctrl.down = false; 
       break; 
      case 32: 
       Ctrl.space = false; 
       break; 
      default: 
       break; 
     } 
    } 
}; 
+0

다른 곳에서도 문제가 발생할 수 있습니까? 예를 들어,'Ctrl.space'를 읽은 후에'false'로 설정하는 부분은 무엇입니까? –

+0

코드를 검사했지만 그 밖의 것은 잘못되었습니다. 이벤트 자체가 그것을 반환 거부, 그래서 난처한. –

답변

1

키보드의 모델에 따라 다릅니다. 일부 키보드의 경우 일부 키보드가 작동하지 않습니다. 정상입니다.

+0

예 모든 키보드가 동일하지 않은 경우 지역 설정 및 키보드 레이아웃이 현재 올바른 국가로 설정되어 있는지 확인할 수 있습니다. – jacqijvv

+0

키보드 입력을 감지하는 방탄 식 방법이 있다고 생각합니까? 아마? –

2

키 중 하나가 원치 않는 기본 동작을 활성화하고있을 수 있습니다. 이벤트 바인딩에 event.preventDefault();을 추가 할 수 있습니다.

check the jsFiddle

+0

시도해 보니 아무 것도하지 않는 것 같습니다. 좋은 추측. –

관련 문제