관련 질문이 많이 있었지만이 부분은 특별히 발견되지 않았습니다.Javascript : Keydown 이벤트 : 화살표 키를 사용하여 Keydown 이벤트를 방지하는 "Up"화살표 키? (답변 : 키보드 고스트)
화살표 키 (37-40)에 대한 keydown 이벤트를 수신하려고하지만 특정 순서로 화살표 키를 사용할 때 후속 화살표는 "keydown"이벤트를 생성하지 않습니다.
예 : - 상자 해당 페이지에서 http://blog.pothoven.net/2008/05/keydown-vs-keypress-in-javascript.html
- 은 "> 여기에 입력"을 클릭합니다.
- 누르고 오른쪽 화살표 키를 오른쪽 위쪽 화살표 키를 계속 누른 상태 38
- 에 테이블 업데이트 : 오른쪽 화살표 키를 누르십시오를 누르고 화살표 키를 계속 누른 상태 테이블 업데이트는 39
- 을 키 코드 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를 누른 상태에서 새 키를 잡을 때마다 "최근 키 다운"을 볼 수 있습니다.
그러나 오른쪽 화살표를 누른 상태에서 위쪽 화살표를 누른 다음 왼쪽 화살표를 누르면 왼쪽 화살표 키가 "최근 키 다운"으로 업데이트되지 않습니다.
코드 줄을 기다리는 중입니다. –
스택 오버플로에 오신 것을 환영합니다! –
* "... 키보드가 연결된 방식으로 PC가 이해하지 못할 수도 있습니다."* oO –