문제

JavaScript에서 키 프레스와 일치 할 때 마법 숫자를 피할 수 있습니까?

예가 사용됩니다 13 Enter 키와 일치합니다.

나는 내 자신의 상수를 지정할 수 있지만,이 값이 다른 플랫폼/브라우저/로컬에서 충분히 안정적인지 모르겠습니다.

도움이 되었습니까?

해결책

이 작업을 처음 시도했을 때 문자열의 charcodeat 메소드를 사용했습니다. 예를 들어, "A"키의 프레스를 감지하려면 :

if ("A".charCodeAt(0) == event.keyCode) {
  /* Do stuff here. */
}

"a"대신 대문자 "a"를 사용했습니다. event.keycode는 대문자 문자의 유니 코드 값으로 만보고되기 때문입니다 (알파 키 인 경우). 이 문제를 약간 털이 많은 것은 눌린 키의 유니 코드 값을 얻는 몇 가지 방법이 있다는 것입니다. Firefox에는 다음과 같습니다.

  • event.keycode
  • event.charCode
  • 이벤트

Mozilla 개발자 문서에 따르면 키의 유니 코드 값은 둘 중 하나에 저장됩니다. event.keycode 또는 event.charCode, 그러나 둘 다 아닙니다. 코드가 어떤 코드를 가지고 있든 이벤트. 그러나 값이 charcode에 저장되면 사례에 민감합니다. 따라서 이벤트를 어디서 얻을 수 있는지에 따라 "A"와 "A"를 모두 확인해야 할 수도 있습니다. "OnkeyDown"이벤트에서 키 이벤트를 얻는 사치가 있고 Firefox를 대상으로하는 경우 event.keyCode에서 SET에서 SET에 대해 사례에 민감한 (상반신) 코드를 얻는 것을 의지 할 수 있습니다. 실제로, 나는 Windows XP에서 Firefox 3.0.3, MacOS 10.4의 Firefox 3.0.4, MacOS 10.4의 Safari 3.2.1 및 MacOS 10.4의 Omniweb 5.8에서 이것을 테스트했으며 모두 동일하게 작동합니다. 그러나 IE 버전이나 오페라 등에서는 이것을 시도하지 않았습니다.

당신이 이것을 스스로 처음부터 개발하고 싶다면. 액세스 할만큼 다양한 운영 체제에서 찾을 수있는만큼 다양한 브라우저를 얻고 각 브라우저가 주요 코드를보고하는 방법을 찾기 위해 실험을 수행하는 것이 좋습니다. 그러나 누군가가 이미 그 일을 해냈습니다. 심지어 언급되었습니다 답 중 하나 질문에 당신은 당신의 예로 링크했습니다! JQuery 호출의 플러그인입니다 JS-Hotkeys. 키 또는 키 조합을 누르면 콜백 함수를 실행할 수 있습니다. 프로젝트 사이트에서 복사 한 예제 :

$(document).bind('keydown', 'Ctrl+a', fn);

다양한 브라우저/플랫폼에서 작업하도록 테스트되었으므로 jQuery를 사용하는 경우 아마도 이동하는 방법 일 것입니다. 어떤 이유로 jQuery를 사용하고 싶지 않다면 운이 좋지 않습니다. 분명히 이것은 기반이었다 다른 스크립트 대신 사용할 수 있습니다. 나는 아직이 라이브러리 중 하나를 개인적으로 사용하지 않았으므로 사용 편의성이나 효능을 보증 할 수 없습니다. 즉, 내가 당신의 문제가 있다면, 그것이 내가 그것을 해결하려는 방향입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top