2012-01-23 2 views
2

한자를 텍스트 상자에 삽입 할 때이를 확실히 감지하려고합니다. keyup, keydown 및 keypress 핸들러를 입력 필드에 추가하면 사용자가 IME (입력기 편집기)에서 한자를 선택할 때 이벤트가 시작되지 않습니다. 예를 들어, 중국어 (간체) pinyan와 맥/파이어 폭스에 내가 입력 한 경우 :Javascript - Google 문서와 같은 중국어 문자 입력

니가 그때는 'N'과 '1'의 키 최대의를 keyDown 이벤트를받을

1을 기록했다. keypress 이벤트가 발생하지 않습니다. 참고 : GWT를 사용하고 있지만 문제가 아닌 것으로 생각합니다.

Google 워드 프로세서가 어떻게하는지 궁금합니다. 나는 특별히 "docs-texteventtarget-iframe"클래스 ("i"가 아님)가있는 숨겨진 iframe에 텍스트로 추가 된 'n'문자를 특별히 알아 챘습니다. 나는 그들이 중국어 문자가 삽입 될 때이를 감지하기 위해 이것을한다고 상상할 것이다.

Google은 입력 언어가 중국어로 변경되었음을 어떻게 알 수 있습니까? 예를 들어 입력 언어가 영어이고 'n'을 입력하면 해당 숨겨진 iframe에 추가되지 않습니다. 중국어 문자 키 이벤트를 감지하는 데 일반적인 기술이 있습니까?

+0

변경 처리기를 추가하려고 했습니까? –

답변

0

필드에 붙여 넣을 때 키 이벤트를받지 못하는 것처럼 입력이 키보드 대신 IME에서 나오기 때문에 키 누르기 이벤트가 발생하지 않는다고 생각됩니다.

텍스트 상자에 ValueChangeHandler을 추가하면 찾고있는 이벤트를 잡는 지 확인할 수 있습니다.

1

사용자가 IME (입력기)를 사용하여 텍스트를 입력하면 입력란의 내용이 변경되기 전에 IME 구성 창에서 많은 상호 작용이 발생합니다. compositionstartcompositionend 이벤트를 통해이를 감지 할 수 있습니다. 실제로 구성이 진행되는 동안 이 아니며은 IME의 keyup/keydows 이벤트를 도용하려고하지 않습니다. 텍스트 입력 요소에서 input 이벤트를 통해 내용이 변경되면 catch 할 수 있습니다.

관련 문제