Mozilla Jetpackについて調べたいこと

どうもWeb経由でインストールが可能っぽく、ステータスバーを更新しているサンプルからchromeコンテンツにアクセスできるっぽい。

  • スクリプトはどのコンテキストで実行されているのか
    • Greasemonkeyのように個々のWebコンテンツ内か
    • userChrome.jsのようにフルアクセスか
    • chromeコンテキスト内だがevalInSandboxでxpconnectは禁止しているか
追記:2009-05-21T19:50 とりあえず、Components.utils.Sandboxを使って、evalInSandboxで実行しているみたい。ってことで気軽に作れる/インストールできる分制限がありますね。

また、拡張開発が簡単になると言われているが、

  • 何が簡単になるのか
  • また、出来ない事はないのか
追記:2009-05-21T19:55 できること
  • Mozilla Labs JetpackにあるAPIの使用
    • console.log():JavaScriptコンソールへログ出力
    • jetpack.notifications.show():nsIAlertsServiceを使用した通知
    • jetpack.statusBar.append:ステータスバーへアイコンなどのアイテム表示
    • タブ関連
      • jetpack.tabs.focused:現在アクティブなタブの参照(getBrowser().selectedTab
      • jetpack.tabs.open():タブに開く(getBrowser().addTab(url)
      • jetpack.tabs.onReady():DOMContentLoadedをトリガーとしたコード実行
chromeコンテンツへアクセスできるので、「ん?」と思ったが、上記で書いたとおりSandbox上で実行されるので既存メソッドを上書きされたとしても他に影響を与えることはなさそう。(ただし、DOM APIを使用して要素の属性などの変更は可能な気がする)

などなど調べたい。

結局、ちょっと凝ったものを作ろうとする場合は、従来どおりのやり方になっちゃうんじゃないの? って疑いが晴れることを祈ります。

追記:2009-05-21T20:30 当然といえばそうだが、やはり、制限がある。 ツールバーを追加したいとか、メニューを追加したいとか、まぁできなくはなさそうだけど、Jetpack経由でやるくらいなら普通に拡張を作ったほうが楽そう。xpconnect(JavaScriptからXPCOMを使用するためのフック)を使えるわけではないし。凝ったやつは普通の拡張の作り方でやった方が良いね。

ごめん、嘘ついた。
xpconnect使えますね。
id:Constellationさん、id:psychedesireさん、申し訳ない。