「再起動不要な拡張機能」の編集履歴(バックアップ)一覧はこちら

再起動不要な拡張機能 - (2014/01/25 (土) 23:03:08) の1つ前との変更点

追加された行は緑色になります。

削除された行は赤色になります。

-[[ブートストラップ型拡張機能 - 拡張機能 | MDN>https://developer.mozilla.org/ja/docs/Extensions/Bootstrapped_extensions]] #contents() *基本 **ファイル構成 *.xpi ├ install.rdf ├ bootstrap.js   ←これが追加 ├ chrome.manifest ├ content ├ locale └ skin **install.rdf に追加 #highlight(xml){ <em:bootstrap>true</em:bootstrap>} **bootstrap.js の内容 #highlight(javascript){{ 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も使えない。 --この辺もjavascriptで。 -defaults/preferences/prefs.js によるデフォルト設定が出来ない。 --全部javascriptで。 -独自XPCOMコンポーネントを登録できない。使えない。 *実際にどう書くか等 例えばブラウザウィンドウにメニューを追加する場合、startup()には +既存のブラウザウィンドウをServices.wmで全て取得 +取得した全ウィンドウにDOM操作でメニュー追加 +Services.wmかServices.wwで今後開かれるブラウザウィンドウを監視して、その都度メニューを追加 という処理を書く。 当然shutdown()には全ウィンドウを取得してメニューを削除する処理を書く。 **スタイルの適用と除去 -[[Using the Stylesheet Service | MDN>https://developer.mozilla.org/ja/docs/Using_the_Stylesheet_Service]] -[[nsIStyleSheetService - XPCOM Interface Reference | MDN>https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsIStyleSheetService]] #highlight(javascript){{ var sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); var uri = Services.io.newURI("chrome://sample/skin/browser.css", null, null); // 適用 sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET); // 除去 if (sss.sheetRegistered(uri, sss.AGENT_SHEET)) { sss.unregisterSheet(uri, sss.AGENT_SHEET); } }} **デフォルト値の設定 -[[Mark Finkle’s Weblog » Restartless Add-ons – Default Preferences>http://starkravingfinkle.org/blog/2011/01/restartless-add-ons-–-default-preferences/]]
-[[ブートストラップ型拡張機能 - 拡張機能 | MDN>https://developer.mozilla.org/ja/docs/Extensions/Bootstrapped_extensions]] #contents() *基本 **ファイル構成 *.xpi ├ install.rdf ├ bootstrap.js   ←これが追加 ├ chrome.manifest ├ content ├ locale └ skin **install.rdf に追加 #highlight(xml){ <em:bootstrap>true</em:bootstrap>} **bootstrap.js の内容 #highlight(javascript){{ 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も使えない。 --この辺もjavascriptで。 -defaults/preferences/prefs.js によるデフォルト設定が出来ない。 --全部javascriptで。 -独自XPCOMコンポーネントを登録できない。使えない。 *実際にどう書くか等 例えばブラウザウィンドウにメニューを追加する場合、startup()には +既存のブラウザウィンドウをServices.wmで全て取得 +取得した全ウィンドウにDOM操作でメニュー追加 +Services.wmかServices.wwで今後開かれるブラウザウィンドウを監視して、その都度メニューを追加 という処理を書く。 当然shutdown()には全ウィンドウを取得してメニューを削除する処理を書く。 **スタイルの適用と除去 -[[Using the Stylesheet Service | MDN>https://developer.mozilla.org/ja/docs/Using_the_Stylesheet_Service]] -[[nsIStyleSheetService - XPCOM Interface Reference | MDN>https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsIStyleSheetService]] #highlight(javascript){{ var sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); var uri = Services.io.newURI("chrome://sample/skin/browser.css", null, null); // 適用 sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET); // 除去 if (sss.sheetRegistered(uri, sss.AGENT_SHEET)) { sss.unregisterSheet(uri, sss.AGENT_SHEET); } }} **デフォルト値の設定 -[[Mark Finkle’s Weblog » Restartless Add-ons – Default Preferences>http://starkravingfinkle.org/blog/2011/01/restartless-add-ons-–-default-preferences/]] #highlight(javascript){{ const PREFS = { someIntPref : 1, someStringPref : "some text value", }; function setDefaultPrefs() { let branch = Services.prefs.getDefaultBranch("extensions.myaddon."); for (let [key, val] in Iterator(PREFS)) { switch (typeof val) { case "boolean": branch.setBoolPref(key, val); break; case "number": branch.setIntPref(key, val); break; case "string": branch.setCharPref(key, val); break; } } } }}

表示オプション

横に並べて表示:
変化行の前後のみ表示: