Firefox を再起動しないと、Firefox 拡張機能に反映されたソース コードの変更を取得できません。ブートストラップアプローチを使用すると、これが可能になるはずです。
ソースコードは次のとおりです:
bootstrap.js
var GOOGBAR_MODULES = [ "resource://googbar/loader.js"];
function startup(params, reason)
{
var res = Services.io.getProtocolHandler("resource").QueryInterface(Ci.nsIResProtocolHandler);
var modulesURI = Services.io.newURI(__SCRIPT_URI_SPEC__ + "/../content/", null, null);
res.setSubstitution("googbar", modulesURI);
Cu.import("resource://googbar/loader.js");
}
function shutdown(params, reason)
{
// Unload all modules added with Cu.import
GOOGBAR_MODULES.forEach(Cu.unload, Cu);
// Clear our resource registration
var res = Services.io.getProtocolHandler("resource").QueryInterface(Ci.nsIResProtocolHandler);
res.setSubstitution("googbar", null);
}
loader.js
console.log("googbar loader loaded");
ローダーでメッセージを変更すると、Firefox (バージョン 30) に反映されません。私の開発フォルダーへのパスを含むプロファイル拡張フォルダーに「goog@myself.com」というファイルがあります。Firefox を再起動しない限り、about:extensions ページから有効化/無効化または削除/元に戻すと、loader.js に加えた変更が反映されません。コードが動的にロードされない理由へのポインターは役に立ちます。
SDK を開発に使用することに興味はありません。https://developer.mozilla.org/en-US/Add-ons/Setting_up_extension_development_environmentで説明されているように、さまざまなフラグも設定しました
編集1:
これは、シナリオをテストするために使用している xpi(1.35KB) としてパッケージ化された上記のコードへのリンクです。https://www.dropbox.com/s/0io8b081ybu632q/test.xpi
編集2:
私の目標は、コードを変更するたびにブラウザーを再起動する必要なく、開発プロセスをスピードアップすることです。ここに関連する投稿がありますが、時代遅れのようです。