복붙노트

[JQUERY] .keyCode 대 .which

JQUERY

.keyCode 대 .which

해결법


  1. 1.참고 : 여기에 몇 년 후 2010 년에 기록 된 대답 아래, keyCode가 어느 모두 (논리적 키) 키를 찬성되지 않으며 (키의 물리적 배치에 대한) 코드. 그러나 IE 코드를 지원하지 않으며, 키에 대한 지원은 사양의 이전 버전을 기반으로합니다 그래서 아주 정확하지 않습니다. 나가 이것을 쓰기 때문에, EdgeHTML와 차크라를 기반으로 현재의 에지 코드 중 하나를 지원하지 않지만 마이크로 소프트는 / 아마 않는 에지에 대한 Blink-와 V8- 기반의 교체를합니다 출시된다.

    참고 : 여기에 몇 년 후 2010 년에 기록 된 대답 아래, keyCode가 어느 모두 (논리적 키) 키를 찬성되지 않으며 (키의 물리적 배치에 대한) 코드. 그러나 IE 코드를 지원하지 않으며, 키에 대한 지원은 사양의 이전 버전을 기반으로합니다 그래서 아주 정확하지 않습니다. 나가 이것을 쓰기 때문에, EdgeHTML와 차크라를 기반으로 현재의 에지 코드 중 하나를 지원하지 않지만 마이크로 소프트는 / 아마 않는 에지에 대한 Blink-와 V8- 기반의 교체를합니다 출시된다.

    일부 브라우저는 다른 사람들이 어떤을 사용하여, 키 코드를 사용합니다.

    당신이 jQuery를 사용하는 경우, 당신은 안정적으로 일을 표준화 jQuery를 같은 어떤 사용할 수 있습니다; 자세한 내용은 여기.

    당신이 jQuery를 사용하지 않는 경우, 당신은이 작업을 수행 할 수 있습니다 :

    var key = 'which' in e ? e.which : e.keyCode;
    

    또는 대안 :

    var key = e.which || e.keyCode || 0;
    

    ... e.which은 (자바 스크립트의 호기심 강력한 || 연산자를 사용하여 마지막에 0, 그 복원하여) 0이 될 수있는 가능성을 처리합니다.


  2. 2.jQuery를 normalises event.which event.which, event.keyCode 또는 event.charCode 브라우저 지원 여부에 따라 :

    jQuery를 normalises event.which event.which, event.keyCode 또는 event.charCode 브라우저 지원 여부에 따라 :

    // Add which for key events
    if ( event.which == null && (event.charCode != null || event.keyCode != null) ) {
       event.which = event.charCode != null ? event.charCode : event.keyCode;
    }
    

    .which의 추가 혜택은 jQuery를 너무 마우스 클릭을 위해 그것을 않는다는 것입니다 :

    // Add which for click: 1 === left; 2 === middle; 3 === right
    // Note: button is not normalized, so don't use it
    if ( !event.which && event.button !== undefined ) {
        event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
    }
    

  3. 3.당신은 바닐라 자바 ​​스크립트에 체류하는 경우, 키 코드 지금은 사용되지 않으며 삭제됩니다 유의하시기 바랍니다 :

    당신은 바닐라 자바 ​​스크립트에 체류하는 경우, 키 코드 지금은 사용되지 않으며 삭제됩니다 유의하시기 바랍니다 :

    https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode

    대신 하나를 사용 : .KEY 또는 .CODE 당신이 원하는 행동에 따라 : https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/code https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key

    모두 최신 브라우저에 구현된다.


  4. 4.이 봐 : https://developer.mozilla.org/en-US/docs/Web/API/event.keyCode

    이 봐 : https://developer.mozilla.org/en-US/docs/Web/API/event.keyCode

    키 누르기 경우, 키의 유니 코드 값은 keyCode가 또는 charCode 값 속성, 결코 둘 다에 저장됩니다 눌렀습니다. 눌려진 키가 (예를 들어, 'A')는 문자를 생성하는 경우, charCode 값은 대소 문자를 존중하고, 그 문자의 코드로 설정한다. (쉬프트 ​​키를 누르고 있는지 즉 charCode 값을 고려한다). 그렇지 않으면, 누른 키의 코드 키 코드에 저장됩니다. 키 코드 항상를 keyDown과의 keyup 이벤트에 설정됩니다. 이러한 경우, charCode 값이 설정되지 않습니다. 관계없이 keyCode가 나 charCode 속성에 저장되었는지 여부의 키의 코드를 얻으려면 어떤 속성을 쿼리. IME를 통해 입력 문자 키 코드 또는 charCode 값을 등록하지 않습니다.


  5. 5.나는 현재 event.key 권 해드립니다. MDN 문서 : https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key

    나는 현재 event.key 권 해드립니다. MDN 문서 : https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key

    모두 자신의 MDN 페이지의 상단에 불쾌한되지 않는 경고가 event.which event.KeyCode과 : https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/which

    숫자 키를 들면, event.key 모든 브라우저에서 동일하게 구현 될 것으로 보인다. 컨트롤 키 (탭, 입력, 탈출 등)의 경우, event.key 분명히 사양하지만 경기의 이전 버전을 사용하는 크롬 / FF / 사파리 / 오페라에서 같은 값하지만 IE10 / 11 / 에지 (IES에서 다른 값을 가진다 2018년 1월 14일)의 각 다른.

    숫자 키에 대한 검사가 무언가를 같이 보일 것이다 :

    event.key === 'a'
    

    제어 문자를 들어 당신은 같은 것을 할 필요가 것입니다 :

    event.key === 'Esc' || event.key === 'Escape'
    

    내가 여러 브라우저에서 테스트 여기 예제를 사용 (내가 codepen 및 편집 IE10에서 작동하도록 그걸 얻기 위해에 오픈했다) : https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/ 암호

    event.code는 가능성 같은 다른 대답에 언급,하지만 당신은 IE 지원을 원하는 경우 밖으로 그래서 IE10 / 11 / 가장자리, 그것을 구현하지 않습니다.


  6. 6.키보드 입력 및 키 조합을 캡처하는 강력한 자바 스크립트 라이브러리에 들어갔다. 그것은 종속성이 없습니다.

    키보드 입력 및 키 조합을 캡처하는 강력한 자바 스크립트 라이브러리에 들어갔다. 그것은 종속성이 없습니다.

    http://jaywcjlove.github.io/hotkeys/

    hotkeys('ctrl+a,ctrl+b,r,f', function(event,handler){
        switch(handler.key){
            case "ctrl+a":alert('you pressed ctrl+a!');break;
            case "ctrl+b":alert('you pressed ctrl+b!');break;
            case "r":alert('you pressed r!');break;
            case "f":alert('you pressed f!');break;
        }
    });
    

    단축키는 다음과 같은 수식을 이해 : ⇧, 이동, 옵션, ⌥, Alt, Ctrl 키, 제어, 명령 및 ⌘.

    다음 특수 키는 바로 가기를 사용할 수 있습니다 : F19 통해 백 스페이스, 탭, 분명, 입력, 반환, ESC, 탈출, 공간, 위, 아래, 왼쪽, 오른쪽, 홈, 엔드, 페이지 업, PageDown 키, 델, 삭제 및 F1.


  7. 7.파이어 폭스에서 키 코드 속성은 때 onKeyPress 이벤트 (만 0을 반환합니다)에서 작동하지 않습니다. 크로스 브라우저 솔루션의 경우, 키 코드 예컨대로하는 속성 서로를 사용 :

    파이어 폭스에서 키 코드 속성은 때 onKeyPress 이벤트 (만 0을 반환합니다)에서 작동하지 않습니다. 크로스 브라우저 솔루션의 경우, 키 코드 예컨대로하는 속성 서로를 사용 :

    var x = event.which || event.keyCode;  // Use either which or keyCode, depending on browser support
    
  8. from https://stackoverflow.com/questions/4471582/keycode-vs-which by cc-by-sa and MIT license