• 締切済み

javascriptでIMEの予測変換制御

jsp,html,java,javascriptを使ってwebアプリケーションを作成しているのですが Win10から、テキスト入力中に予測入力候補が自動で表示されるようになりました。 textareaや「contenteditable="true"」を設定したエレメントに文字入力する際に、 プログラム側から制御してIMEの予測入力を非表示にさせることは可能でしょうか? ※非表示とは、IMEの詳細設定の「予測入力」タブにある「予測入力を使用する」の チェックを外した状態のことを言います。 よろしくお願いします。

みんなの回答

  • 4017B
  • ベストアンサー率73% (1303/1774)
回答No.1

基本的にJavascriptはあくまでもブラウザ内部でのみ完結するwebページの表示(レンダリング)を制御する事しか出来ないしさせるべきではないという方針で開発改良され続けています。従ってIMEの様なより上位のOSが制御する機能には影響を与える事が出来ません。つまり無理。同じ理由でJavascriptを使ってPC内のHDDに保存されているファイルへのアクセスも基本的には出来ない(読込みのみ可能だが書き込みや削除等は拒否される)。 一応、JSを使って「現在のIMEの状態」を取得する事は可能ですが。それより先に踏み込んでIMEの状態を切り替えたり、ましてやIME自体の細かい設定情報等を変更する事はさすがに不可能です。仮にそんな事が可能になったら悪意あるwebサイトに罠を仕掛け放題になってしまいます(バックグラウンドでJSを走らせてIMEの予測変換語句を取得してサーバ側へ送信とか→訪問者のパスワードや住所氏名などを盗める)。 また似た様な感じでIMEを制御させる方法として、単純に任意の <input class="my-input"> に対して input.my-input{ime-mode:disabled;} の様にCSSを指定する事でIMEモード(日本語入力)を停止させ強制的に半角英数字しか入力出来ない様にする手法がありますが…しかしながらこの {ime-mode:~;} は現在主流のモダンブラウザでは無視されるか一部のスマホ搭載版でのみ限定的に機能するだけで、現状のほとんどのブラウザではまともに機能しないので、下手にweb製作者側がIME制御を期待してCSSを実装してもUser側には何ら影響を与えていない場合がほとんどという状況になり大きく齟齬を生み出す結果になるだけなので非推奨です。 実際、HTMLの国際規格を取りまとめるW3Cでも使うべきでは無いとしています。 - W3C: ime-mode https://momdo.github.io/css-ui/#input-method-editor 従って何が何でもIME制御を行いたいのであれば、C等を使ってネイティブアプリとして開発するか、或いはjavaを使うしか方法は無いと思いますが…どちらも自分は門外漢というか、もう何十年も触って無いので現在の仕様とか全く分からないのでアドバイシのしようがありません(PC88とかにはIMEとか無かったので(笑)。 多分、javaならそういったセキュリティを度外視したアブナイ機能や関数が実装されてそうですが…最近はもう流行ってないせいかweb検索で情報収集するのも一苦労です。 - JDK12 https://docs.oracle.com/en/java/javase/12/docs/api/java.desktop/java/awt/im/InputContext.html#isCompositionEnabled() 上記、公式解説などを見ると一応、IMEの状態を取得する関数などはあるみたいなので、もう少し掘り下げればその先を弄る関数などもありそうな気はしますが…そういった細かい設定値まで弄るのは余り聞いた事が無いので。仮にどうやっても実装するとなると、もうゼロから完全に入力文字盤みたいなモノをjavaとかで自作する方が早い様な気もします(そうして置けば余計な個人情報を取得せずに済むのでセキュアに実装可能)。

関連するQ&A

  • ime-mode: activeのことで

    やりたいのは下記のようなことです。でも下記ではime-modeを制御できないようなので、正しい方法があるのかを知りたい。ブラウザの画面で文字を入力したときにime-modeを制御できるのか。 <SPAN contenteditable=true style="ime-mode: active"></SPAN> <SPAN contenteditable=true style="ime-mode: inactive"></SPAN>

  • IMEの予測変換を出ないようにしたい

    Windows10を使用しています。 IMEの予測変換機能を解除したく、 IMEの「プロパティ」→「詳細設定」→「予測変換」→チェックボックスをはずす とやってみましたが、相変わらず変換候補が出てきてしまいます。 IMEのプロパティを確認するとちゃんとチェックボックスははずれています。 再起動をしても変わりません。 入力時に邪魔なので、出てこないようにしたいのです。 よろしくお願いします。 ※OKWAVEより補足:「NEC 121ware :ソフトウェア」についての質問です

  • JavascriptでIMEのON,OFF制御

    こんにちは,いつもお世話様です。 Webアプリケーション上で,入力フィールド(テキストボックス)に入った場合に,Javascriptで,IMEをON,OFFさせて,ユーザビリティを向上させる方法があるそうですね。この方法について教えてください。よろしくお願いします。

  • Office IME 2010 をインストールしたんですが予測入力がで

    Office IME 2010 をインストールしたんですが予測入力ができません… SharePoint 2010 のインストーラーから Office IME 2010 をインストールしたんですが、予測入力ができません。 インストールは Office IME 2010 のみを選択しました。 設定は 予測入力を使用する、入力履歴をファイルに保存する 共にチェックをつけています。 1.なにかインストールするものが足りなかったのでしょうか? 2.これからできるようになるのでしょうか? 3.インターネットの検索候補のようになるものではないのですか?

  • IME2003からIME2007に変更しました。予測変換ができるのですが、「あい」と入力すると…  設定で直せますか?

    IME2003を使っていましたが最近誤変換がひどくATOKに変えることを検討したのですが、その前にとりあえずIME2007を使うことにしました。 (IME2007はwordについていたもので、インストールはしてたのですが、評判が悪い事と、IME2003で辞書登録などをしてたため使っていませんでした。) そのIME2007は文字入力時に予測変換をしてくれるのですが、全然使えません。 何かの拍子に「あい」と入力したら[愛国無罪]と出てきました。 ちなみに「こい」では[小泉改革]です。 あいなら[愛国主義]でも[愛人契約]でもいいはずなのに某国の言葉がトップに出てきます。 Q1.IME2007の使用データをフィードバックしてランキングしているのでしょうか?(日本語を使う○国人が多い?) Q2.それともIME2007出た時の噂「microsoftは人件費削減のため中国でIMEを開発したため日本語がめちゃくちゃで使いづらい」というのがホント なのでしょうか? 中国製のソフトなら「愛国無罪」でもしょうがないですけど・・・ Q3.これは設定をすることによって少しはましになるのでしょうか? それとも使い続けて少しずつ学習させないといけないのでしょうか? 詳しい方がいらっしゃいましたらよろしくお願いいたします。

  • JavaScriptからJAVAクラスを呼び出す

    JavaScriptからJavaクラスのメソッドやコンストラクタを呼び出す事ってできるのでしょうか? 今、行おうとしているのが、テキストにて入力した後に日付編集(4200812 → H20. 8. 12に変換)処理を行うというものです。 初期表示時は、Javaクラスで変換して表示させるので、大丈夫なのですが、どうしても入力したタイミングで変換させるには、JavaScriptを使用しなければなりません。 そこで、JavaScriptに元号情報やJavaで記述した制御などを記載すればできると思いますが、面倒臭いので、JavaScriptからJavaクラスのメソッドが実行できればなと思います。 そのような事はできるのでしょうか?? JDKは1.6です。

  • 検索窓に予測変換が出ません

    グーグルクロームを使っていて、URLを入れるところに、検索したい文字列をいれても予測変換が出ません。 IMEはグーグル日本語入力を使っています。どうすれば、予測変換が表示されるでしょうか

  • JavaScriptでのEnterキーとAlt+Enterキー制御について

    Web画面で入力するシステムを構築しています。 利用者が入力する際、使いやすくするためという要望があり、現在「Enterキー」を押下するとそのキーコードをトラップし、TABに変換して次項目へ移動させるという処理をJavaScriptで行っています。 ここで、Web画面の項目に「TEXTAREA」があり、その項目中で入力し改行したいと思っても上記JavaScriptが効いてしまって次項目へ飛んでしまいます。 そこで「Alt+Enter」を押すとTEXTAREA内で改行するという処理を作り込みたいのですが、やり方がわかりません。(ただし、Altでなくても可。要はEnterを押すと次項目へ移動し、何か特別なことをするとTEXTAREA内で改行できればOK。) 「Alt+Enter」時のキーコードや具体的なやり方を紹介していただけないでしょうか? 以上、よろしくお願いします。

  • 日本語入力の禁止

    お世話になります。 divにcontenteditable属性を付与して編集できるようにしました。 そのとき、日本語は入力禁止にしたいのですがime-modeはdivには使用できないみたいです。 日本語入力のときはkeycode229が返ってくるようなのでjavascriptでonkeydownのときに if (event.keyCode == 229) { return false; } というif文を入れてみました。alertとかで確認するとちゃんと日本語入力の時にはこのif文を通過しているみたいなのですが 日本語が入力されてしまいます。 div contenteditable=trueのときに日本語入力を禁止したい場合はどのようにすれば実現できるのでしょうか。 <div contenteditable=true onkeydown="return test();">編集テスト</div> function test() { if (event.keyCode == 229) { return false; } return true; } よろしくお願いします。

  • jsp javaScript

    javaScript初心者です。 質問させてください。 テキストに入力された数値を、判定して trueならjspページへ移動 falseならクリアみたいな形のプログラムを作ろうと思っています。 どなたかアドバイスいただけませんか。 よろしくお願いします。

専門家に質問してみよう