2016-08-06 2 views
1

일부 키는 A과 같이 onKeyDown 및 onKeyPress 이벤트를 발생시키고 일부 키는 SHIFT과 같이 onKeyDown 만 실행합니다. onKeyPress 이 특정 키에 대해이 실행되지 않았는지 어떻게 확인할 수 있습니까? 키가 눌려 지 자마자이를 감지해야하므로 지연 때문에 onKeyUp을 사용할 수 없습니다.onKeyPress가 onKeyDown 후에 실행되지 않았 음을 어떻게 확인할 수 있습니까?

+0

로부터 해결책을 클릭 : 당신은 때 onKeyPress이 같은 키 해고되었는지 여부를 저장할 수 내 머리 꼭대기에서 var를 사용하여 onkeyPress 이벤트를 추적 한 다음 0 지연으로 setTimeout을 사용하여 모든 이벤트가 완료된 후 실행될 이벤트 테이블에 새 이벤트를 대기열에 넣습니다 (이 시점에서 두 이벤트가 모두 실행되는지 확인할 수 있음). 또는 단지 하나) – sarepta

답변

1

onKeyPress는 onKeyDown 이후 및 onKeyUp 전에 실행되므로이 ​​경우에는 onKeyUp 만 사용할 수 있습니다. ,

var keyPressedFired = false; 
 

 
document.addEventListener("keypress", function(e) { 
 
    keyPressedFired = true; 
 
}); 
 

 
document.addEventListener("keyup", function(e) { 
 
    if (!keyPressedFired) { 
 
     alert('KeyPress not fired this key'); 
 
    } 
 

 
    keyPressedFired = false; 
 
});

실행 조각 흰색 아래 부분 시프트 (Shift) 키를 누르면

+0

'A'를 누르고 있습니다. n 'SHIFT'키를 누릅니다. 'SHIFT'을 놓고'A'를 놓습니다. 'KeyPress가이 열쇠를 발사하지 않았다 '는 메시지가 나타나서 틀렸다. –

관련 문제