読者です 読者をやめる 読者になる 読者になる

かな漢字変換未確定のテキストボックスの値を取得する

かなり今更ですが、久しぶりに Google Suggestを使ってみたところ、驚いてしまいました。なんと「あ」と打っただけ(未確定状態)で候補が上がってくるのです。しかもカタカナや漢字に変換された結果まで!!
IME での変換中は値を取得できないと思い込んでいたのでかなり驚きです。いったいどうしてるのかと思い、ソースを読んでみると何のことは無い、タイマーでテキストボックスの値を監視してるだけでした。
すごく簡単に書いてみると以下のような感じ。

<head>
 <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
 <title>unknown</title>
 <meta http-equiv="content-style-type" content="text/css" />
 <meta http-equiv="content-script-type" content="text/javascript" />
 <script type="text/javascript">
  window.onload = function(){
   var oldvalue = "";
   var textbox = document.getElementById("inputvalue");
   var log = document.getElementById("log");
   var check = function(){
    if(oldvalue != textbox.value){
     log.innerHTML += "\"" + textbox.value + "\"  ";
     oldvalue = textbox.value;
    }
    setTimeout(check,100);
   }
   check();
  }
 </script>
</head>
<body>
 <div><input id="inputvalue" type="text" /></div>
 <div id="log"></div>
</body>

このコードでは 0.1 秒に一回テキストボックスの値を確認して、変わっていたら div タグの中に文字列を書き出してます。 Google Suggest もこんな感じで文字列を取得してサーバーに投げて、結果一覧を取ってきてます。

いやー、しかし変換中でも値を取得できるんですね。キーダウンなどのイベントが拾えないのでてっきり無理なのかと思い込んでました。

ちなみに Windows XP SP2 で IE7Firefox 2.0.0.2 と Opera 9.1 で確認してます。漢字かな変換は IME です。 ATOK とか他の漢字かな変換エンジンや OS でも同様に動くかどうかは分かりません。すくなくとも ATOK は試しておきたいなぁと思って試用版とかを探してみたのですが無いのですね・・・。