Firefox アドオン開発(4) 各ページとの通信

Addon Scriptでハイライト対象のURLパターン(なんて言っちゃうと正規表現でマッチングできそうな感じがしてしまうが単に「含む」だけ)を管理できるようになった。
でも、Addon Scriptは実際にブラウジングしているページには一切関与できない。

そこで今度はパターンを受け取って実際にページをゴニョゴニョするスクリプトをページに埋め込む必要がある。
ページが読み込まれると同時にスクリプトを注入するためにpageModというAPIを使う。このpageModというのは特定のURLパターンのページが読み込まれるとアクションをするというもので、URLパターンを'*'にしておけばどんなページに対してもアクションが起きる。

  

使い方は簡単で、

とするとタブにページが読み込まれるたびにdata/highlighter.jsとdata/highlighter.cssがページに適用される。
workerというのは各ページのContent Scriptとほぼイコールであり、このworker.port.emitで情報を渡したりworker.port.onで受け取ることができる。

pageshowだとかなんたらっていうのはよく意味がわかってないんだけれども、これらを入れとかないとページ遷移とかタブ切り替えで問題が起きるみたい。
参考: Addon SDK - context-menu and page-mod workers