2010年3月24日水曜日

Popup Dictionary: 初めてのFirefox addon

英語のウェブページを読むときに書かせないのが、goo辞書や英辞郎などのオンライン辞書です。ただ、「調べたい単語を選択」→「別のタブを開く」→「オンライン辞書で検索」→「結果を読む」→「元のタブに戻る」という手順は明らかに非効率です。

ということで、選択した単語の周辺にポップアップで単語の意味を表示するaddonを作って見ました。Firefox addon初挑戦。

参考にしたページは、Mozilla Developer CenterのXUL / JavaScript / DOMです。最初に "Setting up an extension development environment" を読んで、環境をセットアップしましょう。

基本的には、ウェブページの作成と同じです。XUL(HTML)で画面を設計し、Stylesheetで細かくデザインし、JavaScriptで動きをつける、と。異なる点としては、
  • HTMLよりコントロールが豊富なXULが使える
  • ブラウザがFirefoxに限定されたため、ブラウザによるJavaScriptの挙動の違いに悩まされることがなくなった(気がしますが、Linuxでしかテストしてないのでわからない)
  • Cross site XMLHttpRequestが使える
ぐらいでしょうか。

困った点は、
  • 何を設定すれば、Firefoxの「ツール」→「アドオン」→「設定」から開くコンフィグダイアログを開けるようになるのか? (答:install.rdfにoptionsURLタグを書く)
  • XULのelementにaddEventListenerしても、event handlerに処理が渡ってこない。(答:いまだわからず。windowにaddEventListenerするという応急処置)
  • "about:config"画面に表示されるデータストア (?) に値を保存するにはどうするのか。(答:Components.classes['@mozilla.org/preferences;1'].getService(Components.interfaces.nsIPrefBranch)で取得できるオブジェクト経由でget/set可能。)
があります。
最後のComponents.classes[foo].getService(bar)を使いこなせれば、もっと便利なサービスが利用できそうです。が、ドキュメントが見つけられず。

ソースコードはgithubに置きました。
こちらから直接インストールできます。
Popup Dictionary ( http://www.kwakaku.net/public/popupdictionary.xpi )

0 件のコメント:

コメントを投稿