Hatena::ブログ(Diary)

遙かへのスピードランナー RSSフィード

Firefoxを簡単に携帯シミュレータにするアドオン「FireMobileSimulator」公開中です!

2008-06-02

Firefoxで独自プロトコルをハンドリングするアドオンを作成する

最近Firefoxの自作アドオンを作成しようといろいろやってみてるので、その一部の内容をブログに記しておく。

最終的に作りたいアドオンの内容はまだ公開できないのだけれど、技術的にやりたい要素としては大体以下の通り。

  1. 独自プロトコルを定義して、そのプロトコルに対するリクエストに対して、独自に作成したHTMLを返す。
  2. 予め指定されたhostに対するHTTPリクエストに対し、独自に作成したHTMLを返す。
  3. 全HTTPリクエストに対して、指定されたHTTPヘッダを付与する。

このうち、まず1番目を実装する為、以下を参考にした。

和訳:Firefoxで独自プロトコルを定義する方法 - outsider reflex

原文:Adding a New Protocol to Mozilla

ここで掲載しているjavascriptコードをアドオンにパッケージングすれば、x-search:hogeみたいなURIを打ち込むと、自動的にサーチエンジンに渡してくれる動きをするらしいのだが、どうもうまく動かない。<


f:id:thorikawa:20080602191958j:image

上記のように「x-search:hoge」とアドレスバーに入力すると、以下のメッセージエラーコンソールに出力される。

f:id:thorikawa:20080602191959j:image

エラーメッセージ:document is not defined.

どうやらdocumentオブジェクトがjavascript内で取得できていない模様。

詳しい仕組みまでは理解していないけど、XPCOMコンポーネントの中で、現在ドキュメントオブジェクトを取得できないので、注意する必要がある。


この場合は、転送先のURLが決まっているので

125行目: return ios.newChannel("javascript:document.location.href='" + finalURL + "'", null, null);

じゃなくて、

125行目: return ios.newChannel(finalURL, null, null);

みたいに書けばいい。

修正したjavascriptはここから落とせます。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証