Googleサジェストみたいなオートコンプリート
一昔前に一世風靡したGoogleサジェスト風のオートコンプリートの実験をしてみた。
オートコンプリートは以前から気になっていてオープンソースなAJAXを試したりしした事はあったんだけど日本語はIMEを通すので正常に動かなかった
「IMEを通すから仕方ないよな~」と納得して実際のサイトに使う事は無かったんだけど
ふと、「Googleのオートコンプリートって日本語もオートコンプリートしてるような・・・」と思って調べる事にした。
Googleのオートコンプリートはac.jsを見ればいいのだけれど難解すぎるのでパス。
検索してみると
Google サジェストの不思議
という記事を見つけた。keydownがダメなだけであってkeyupだとIMEの入力途中の文字も参照できるみたい。
そこで、ベースにするオープンソースなAJAXを探してみた。せっかくCS4になったのだからSpryを使っても良かったけど中身を弄る可能性が大きいので
jQueryでシンプルそうでキャッシュが付いてる「jquery.suggest」っていうのを使う事にした。
データはMyReleaseのキーワードを人気順に並べて使う事にした。
やってみたがIMEでつまづく、keyupにしてもkeydownにしてもダメ。
試しにIEでやってみたらいける。どうやら昔試した時もブラウザの問題で挙動がおかしかったのかもしれない。
調べてみると
tonextone.com/note/ – JavaScript の *.onkey* と IME の事情。その1
どうもブラウザに挙動が違うらしい。諦めかけてると次の記事に解決法が書いてあった。
tonextone.com/note/ – JavaScript の *.onkey* と IME の事情。その2
Googleさんはタイマーをしかけてたらしい。
という事でテスト終了。
日本語オートコンプリートテスト(公開終了)
(ライセンスを書いてないので書き換えていいのか分からないがjquery.suggestもjQuery autocompletersを元にしてるらしいんでいいんかな?)