逆引きマニュアル: 【継続調査】JavaScriptでのIMEハンドリング

投稿日:

やりたいこと

日本語入力のハンドリングをJavaScriptでどう扱うかという話です。 可能なら、変換中は処理せず、変換が完了した時点で処理したい。

前提条件

  • Chrome 68
  • Firefox 61.0.2
  • Safari 11.1.2

概要

以下の2つが使えそうな候補です。

JSFiddleで検証用の簡単なコードを書いています。


実際の結果は以下のようになりました。

  • Chrome
    • IMEオフで入力: inputイベントが発生。isComposingはfalse
    • IMEオン、入力中: inputイベントが発生。isComposingはtrue
    • IMEオン、入力完了: compositionendイベントが発生
    • ペースト: inputイベントが発生、isComposingはfalse
  • Firefox
    • IMEオフで入力: inputイベントが発生。isComposingはfalse
    • IMEオン、入力中: inputイベントが発生。isComposingはtrue
    • IMEオン、入力完了:
      • compositionendイベントが発生
      • inputイベントが発生、isComposingはfalse
    • ペースト: inputイベントが発生、isComposingはfalse
  • Safari
    • isComposingは未対応(undefined)
    • IMEオフ: 入力時にinputイベントが発生。
    • IMEオン、入力中: inputイベントが発生。
    • IMEオン、入力完了:
      • inputイベントが2回発生
      • compositionendイベントが発生

この時点でちょっとやる気なくしました(´・ω・`)

補足

外部サイト

マニュアル