2012-01-23 10 views
2

中国語文字がテキストボックスに挿入されたときに確実に検出しようとしています。 keyup、keydown、およびkeypressハンドラを入力フィールドに追加すると、ユーザーがIME(入力メソッドエディタ)から中国語を選択したときにイベントは発生しません。たとえば、簡体字中国語pinyanを搭載したMac/Firefoxの上では、私が入力した場合:Javascript - Googleドキュメントのような中国語文字入力を検出する

niはその後、私は「N」と「1」のキーアップのためのKeyDownイベントを受け取る

1を押してください。 keypressイベントは発生しません。注:私はGWTを使用していますが、問題はないと思います。

私はGoogle docsがこれをどのようにして行うのか不思議でした。私は、中国語のために、 "docs-texteventtarget-iframe"クラスで非表示のiframeにテキストとして追加された 'n'文字を認識しました(ただし、 'i'は表示されません)。中国人のキャラクターが挿入されたことを検出するために、この作業を行っていると思います。

Googleは入力言語が中国語に変更されたことをどのように知っていますか?たとえば、入力言語が英語で、 'n'と入力すると、その非表示のiframeには追加されません。漢字キーイベントを検出するための一般的なテクニックはありますか?

+0

変更ハンドラを追加しようとしましたか? –

答えて

0

フィールドに貼り付けるとキーイベントを取得しないのと同じように、入力がキーボードではなくIMEから来ているため、キー押しイベントが発生していない可能性があります。

テキストボックスにValueChangeHandlerを追加して、探しているイベントが見つかるかどうか試してみることができます。

1

ユーザーがIME(入力メソッドエディタ)を使用してテキストを入力すると、入力フィールドの内容が変更される前に、IME合成ウィンドウ内で多くの対話が行われます。これは、compositionstartcompositionendイベントで検出できます。実際には、構成が進行中、あなたは間違いなくを実行しないでください IMEからのkeyup/keydowsイベントを盗もうとしていません。テキスト入力要素では、コンテンツがinputイベントによって変更されたときに捕捉できます。

関連する問題