「再起動不要な拡張機能」の編集履歴(バックアップ)一覧に戻る
再起動不要な拡張機能 - (2014/01/25 (土) 20:35:54) の編集履歴(バックアップ)
基本
ファイル構成
*.xpi
├ install.rdf
├ bootstrap.js ←これが追加
├ chrome.manifest
├ content
├ locale
└ skin
install.rdf に追加
<em:bootstrap>true</em:bootstrap>
bootstrap.js の内容
function startup(data, reason) {
// 拡張機能の起動時(Firefoxの起動、拡張機能の有効化など)に実行
}
function shutdown(data, reason) {
// 拡張機能の終了時(Firefoxの終了、拡張機能の無効化など)に実行
}
function install(data, reason) {
// 拡張機能のインストール時に一度だけ実行
}
function uninstall(data, reason) {
// 拡張機能のアンインストール時に一度だけ実行
}
制限
- chrome.manifestでoverlayが使えない。
- つまり既存の機能やUIを変更したい場合、xul overlayに頼らず全てjavascriptで処理しなければならない。
- contentは使えるので独自のxulウィンドウ等を使う事は可能。
- overrideなら使える。
- chrome.manifestでstyleも使えない。
- defaults/preferences/prefs.js によるデフォルト設定が出来ない。
- 独自XPCOMコンポーネントを登録できない。使えない。
実際にどう書くか等
例えばブラウザウィンドウにメニューを追加する場合、startup()には
- 既存のブラウザウィンドウをServices.wmで全て取得
- 取得した全ウィンドウにDOM操作でメニュー追加
- Services.wmかServices.wwで今後開かれるブラウザウィンドウを監視して、その都度メニューを追加
という処理を書く。
当然shutdown()には全ウィンドウを取得してメニューを削除する処理を書く。