Opera で Migemo 検索 with Opera Unite

↓の続きです。

migemo 三部作最終章(ウソ)


1つ目のはサーバを立てなきゃいけないからイマイチで
2つ目のやつはそもそもサーバが Migemo サーバじゃなかったからイマイチでした。


今回のは Opera UniteMigemo サーバを動かすので
上記二つの問題を一挙に解決します。

インストール

Opera Unite が動作する Opera で操作してください。
# 動作確認したのは Mac Opera (build 6510)
Opera Unite のサービス: migemo-unite.us
ユーザースクリプト: migemo-unite.js


migemo-unite.js はインストール後、
MIGEMO_URL を自分の環境に合わせてください。

操作方法

  • Ctrl + "/" : 検索ボックスを表示
  • 検索ボックス表示状態
    • Shift + G : 次を選択
    • Shift + Ctrl + G : 前を選択
    • Enter : 選択項目のリンクを開く
    • Ctrl + "/" : リンクのみから検索モードとトグル(文字が赤い時はリンクのみ)
    • Escape : 検索ボックス非表示

Mac の場合は Ctrl でも Cmd でも動きます。
3文字以上タイプしないと migemo は動作しません。

仕組み

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 ライセンスで。

感想

三部作の中で一番完成度高いです。たぶん。

参考にしたサイト