HTMLシステムでのIME制御
Htmlを使用した業務アプリを作成すると困ることがあります。
IMEの制御ができないことです。
IME制御はシステム側で勝手に変えないというのが、現在のデフォルトだと思いますが、
昔からある業務システムの場合、IME制御は勝手に行われるのがデフォルトの場合が多く、特に連続入力するフォームの場合には、IME制御が自動かどうかで入力速度が大きく変わります。
ブラウザの仕様上できないという説明をするのですが、新しくWebシステムに変更した場合、IME制御ができなくなることがかなり不満となります。
以前からIEに関しては、IME-MODEという独自スタイルが定義されており、IMEのON/OFFについては制御可能でした。
ですが、現在主流のブラウザではこのスタイルは全く効きません。
一応、HTML5.1という仕様では、inputmodeという属性が定義されており、これを使うと一部のブラウザではIMEのON/OFFが使えます。
ただし、やはり世の流れはIME制御不要ということなのかHTML5.2の最新仕様では削除されているため、いつ動作しなくなるか分かりません。
試してみたところ、inputmodeは、chromeでは動作しましたが、edgeやie、Firefoxでは機能しませんでした。
現在ベータ版の新しいedgeでも機能しません。
とりあえず、IME ON/OFF制御をchrome限定で良ければinputmodeを実装できます。
他に何らかの実装方法があればいいのですが、ブラウザ上の制限のため、外からはなんともならないと思います。
IME制御が必須のシステムは今まで通りネイティブアプリで作成しろってことでしょうか。
カナ氏名を半角カナで入力したい要件は未だにあるので、どっちみちIMEのON/OFF制御ではどうにもなりませんが。。。
一応テストしてみたときのHTMLファイルを載せておきます。
inputmodeの指定は色々定義されていますが、IMEの動きとしてはひらがなか英数かの切り替えしか行われないみたいです。
inputmode=”decimal”にしたところで、整数値だけが入力可能になるわけでは有りません。
type=”number”にしたほうが間違いないです。
inputmode動作テスト
おまけ ime-mode
※androidのchromeで表示したところ、inputmodeが設定されていたら、それぞれの入力方法に変わりました。これはなかなか便利です。
例えば、”email”にすればメールアドレス入力用になりますし、”tel”にすれば電話番号入力しやすい入力ボタンが表示されます。また、入力候補もそれぞれの入力にあったものが表示されます。
これは使えるかもしれません。
== ランキングに参加しています。ぜひクリックお願いします ==
[Angular] select-optionでvalueにnullをセットしたいとき ポート開通確認