2012-04-22 2 views
9

관련 질문이 많이 있었지만이 부분은 특별히 발견되지 않았습니다.Javascript : Keydown 이벤트 : 화살표 키를 사용하여 Keydown 이벤트를 방지하는 "Up"화살표 키? (답변 : 키보드 고스트)

화살표 키 (37-40)에 대한 keydown 이벤트를 수신하려고하지만 특정 순서로 화살표 키를 사용할 때 후속 화살표는 "keydown"이벤트를 생성하지 않습니다.

예 : - 상자 해당 페이지에서 http://blog.pothoven.net/2008/05/keydown-vs-keypress-in-javascript.html

  1. 은 "> 여기에 입력"을 클릭합니다.
  2. 누르고 오른쪽 화살표 키를 오른쪽 위쪽 화살표 키를 계속 누른 상태 38
  3. 에 테이블 업데이트 : 오른쪽 화살표 키를 누르십시오를 누르고 화살표 키를 계속 누른 상태 테이블 업데이트는 39
  4. 을 키 코드 keycode 언론과 왼쪽 화살표 키를 누른 상태에서 : 나도 같은 일을하지만, 아래로 화살표 키를 대신 예상대로 작동 후 화살표 키를 최대 를 사용하는 경우 테이블 은, 그러나하지 업데이 트를

않습니다.

또한 화살표 키 대신 키패드를 사용하면 예상대로 작동합니다.

나는를 keyDown 이벤트의 정상적인 작동을 방지하고 (그리고로 preventDefault를 호출하여 이벤트 리스너에서 false를 반환하여 모두())하지만, 행동은 지속됩니다.

내 키보드라고 생각했지만 친구의 컴퓨터 에서뿐만 아니라 노트북에서도 발생합니다.

누구에게 무슨 일이 일어나는지에 대한 통찰력이 있습니까? 또는 해결 방법에 대한 좋은 아이디어가 있습니까?

[편집] 다음은 내가 말하는 의미의 예입니다. 나는이 모든 브라우저에서 작동하지 않을 수 있습니다 실현,하지만 난 그냥 나에게 무슨 일이 일어나고 있는지 보여 (W7에 크롬과도 맥 OS 10.6.8에 & 사파리 크롬)

<html> 
<body> 
<script> 

var keysDown = {}; 
addEventListener("keydown", function(e) { 
    keysDown[e.keyCode] = true; 
    document.getElementById('latestKeydown').value=e.keyCode; 
}, false); 

addEventListener("keyup",function(e){ 
    delete keysDown[e.keyCode]; 
}, false); 

var loop = function(){ 
    document.getElementById('upinput').value=keysDown[38]; 
    document.getElementById('downinput').value=keysDown[40]; 
    document.getElementById('leftinput').value=keysDown[37]; 
    document.getElementById('rightinput').value=keysDown[39]; 
} 

setInterval(loop,1); 

</script> 
Up: <input id="upinput" type=text size=10><br /> 
Down: <input id="downinput" type=text size=10><br /> 
Left: <input id="leftinput" type=text size=10><br /> 
Right: <input id="rightinput" type=text size=10><br /> 
Recent Keydown: <input id="latestKeydown" type=text size=10><br /> 

</body> 
</html> 

을 내 노트북에 함께이 던져 다시 문제는 다음과 같습니다. A, S, D, F, G를 누른 상태에서 새 키를 잡을 때마다 "최근 키 다운"을 볼 수 있습니다.

그러나 오른쪽 화살표를 누른 상태에서 위쪽 화살표를 누른 다음 왼쪽 화살표를 누르면 왼쪽 화살표 키가 "최근 키 다운"으로 업데이트되지 않습니다.

+1

코드 줄을 기다리는 중입니다. –

+0

스택 오버플로에 오신 것을 환영합니다! –

+0

* "... 키보드가 연결된 방식으로 PC가 이해하지 못할 수도 있습니다."* oO –

답변

3

나는 이것에 대해 말할 수는 없지만 https://stackoverflow.com/a/4177260/562209에 따르면, 수정 자 키와 수정자가 아닌 키를 동시에 누르지 않으면 다중 키 누름과 관련하여 "PC는 그렇지 않을 수도 있습니다 키보드가 유선 방식이기 때문에 이해하십시오. "

+3

다음은이 문제에 대한 좋은 설명입니다. http://www.microsoft.com/korea/appliedsciences/antighostingexplained.mspx – user123444555621

+0

Gah :(감사합니다. 사람들이 범인으로 보입니다. – ElleryTheJones

관련 문제