プロプログラマ

プログラマーを職業としてます。 Flex,Air,C#,Oracle,HTML+JSの言語ノウハウを中心に情報発信していきます

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動作テスト

入力モードを指定しない(none):
テキスト入力モード(text):
電話番号入力モード(tel):
URL 入力モード(url):
Eメールアドレス入力モード(email):
数値入力モード(numeric):
整数値入力モード(decimal):
検索語入力モード(search):
ラテン文字逐語モード(HTML 5.1の規定値)(verbatim):
ラテン文字モード(latin):
ラテン文字入力モード(名前入力用)(latin-name):
ラテン文字文章入力モード(latin-prose):
全角ラテン文字入力モード(full-width-latin):
漢字変換ひらがな入力モード(kana):
漢字変換ひらがな入力モード(名前入力用)(kana-name):
カタカナ入力モード(katakana):

おまけ ime-mode

自動(auto):
IMEをオンにします(active):
IMEをオフにします(inactive):
IMEを使用禁止にします(disabled):

※androidのchromeで表示したところ、inputmodeが設定されていたら、それぞれの入力方法に変わりました。これはなかなか便利です。
例えば、”email”にすればメールアドレス入力用になりますし、”tel”にすれば電話番号入力しやすい入力ボタンが表示されます。また、入力候補もそれぞれの入力にあったものが表示されます。

これは使えるかもしれません。

 

== ランキングに参加しています。ぜひクリックお願いします ==

プログラム ブログランキングへ
にほんブログ村 IT技術ブログへ
にほんブログ村

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください