Opera で Migemo 検索 with Opera Unite
↓の続きです。
migemo 三部作最終章(ウソ)
1つ目のはサーバを立てなきゃいけないからイマイチで
2つ目のやつはそもそもサーバが Migemo サーバじゃなかったからイマイチでした。
今回のは Opera Unite で Migemo サーバを動かすので
上記二つの問題を一挙に解決します。
インストール
Opera Unite が動作する Opera で操作してください。
# 動作確認したのは Mac Opera (build 6510)
Opera Unite のサービス: migemo-unite.us
ユーザースクリプト: migemo-unite.js
操作方法
- Ctrl + "/" : 検索ボックスを表示
- 検索ボックス表示状態
- Shift + G : 次を選択
- Shift + Ctrl + G : 前を選択
- Enter : 選択項目のリンクを開く
- Ctrl + "/" : リンクのみから検索モードとトグル(文字が赤い時はリンクのみ)
- Escape : 検索ボックス非表示
仕組み
JavaScript/Migemo を使って JavaScript だけで
Migemo を実現してます。JavaScript/Migemo すごい。
Opera Unite のサービスは JavaScript/Migemo と
ユーザースクリプトの橋渡しを JSONP 使ってしてるだけ。
ソースはこんな感じ。
index.html
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>migemo unite</title> <script type="text/javascript" src="migemo.js"></script> <script type="text/javascript"> var handlers = []; handlers.push(['_index', migemoHandler]); window.onload = function () { for(var i = 0 ; i < handlers.length ; ++i) { var h = handlers[i]; opera.io.webserver.addEventListener(h[0], h[1], false); } } function migemoHandler(event) { var connection = event.connection; var uri = connection.request.uri; var sp = uri.split("?"); if (sp.length <= 1) { connection.response.write("migemo unite"); } else { migemo.initialize(); connection.response.write("migemoCallback(\"" + migemo.query(sp[1]) + "\");"); } connection.response.close(); } </script> </head> </html>
ライセンスは MIT ライセンスで。
感想
三部作の中で一番完成度高いです。たぶん。
参考にしたサイト
- http://www.oldriver.org/jsmigemo/
- JavaScript/Migemo をそのまんま使ってます
- ライセンスとか書いてなかったので勝手に使っちゃったけど問題がある場合は連絡下さい
- Opera Unite サービスの作り方 - WebOS Goodies
- Opera Unite サービス開発の超わかりやすい解説