Bug 766809 は、
Bug 777352 のDUPになっていますね。
で、
https://builder.addons.mozilla.org/ を見ると、
The builder is being retired and is in read-only mode.
と書いてありました。
何を目的にしているのかわからないですが、自分のコードライブラリーを自分の複数のアドオンで共有したい、という場合には、「JavaScript Code Module」 (参照:「
JavaScript code modules 」、「
JavaScript Object Management 」)が使えます。
コード:
1. アドオンのchrome.manifestに以下を記述
resource アプリ名 modules/
2. アドオン内のmodules/ABCDEF.jsmに以下を記述
var EXPORTED_SYMBOLS = [ "共有する変数名" ] ;
var 共有する変数名 = {};
あとは、普通のJavaScrptのコードで、
共有する変数名["プロパティorメソッド名"] = ...;
と、 オブジェクトプロパティやオブジェクトメソッドを定義。
この中で、
Components.utils.import("resource://アプリ名/子供のファイル名.jsm",共有する変数名["プロパティorメソッド名"] );
を使えば、
共有する変数名["プロパティorメソッド名"] [子供が作り出す変数名]
というオブジェクトが作られますから、階層化やjsmファイルの分割は簡単だし、子供の部分だけを単独でロードすることも可能です。
EXPORTED_SYMBOLSという決められた名前の変数は、単なるJavaScriptのArray Objectですから、
var EXPORTED_SYMBOLS = [ "共有する変数名A" , ... "共有する変数名Z"] ;
と、複数定義することも可。
3. あとは、他のfunctionの中で、
Components.utils.import("resource://アプリ名/ABCDEF.jsm.jsm");
をだすと、「共有する変数名」という変数が作られますから、
共有する変数名.そのメソッド()、共有する変数名["プロパティ名"]、などで、参照・変更ができます。
なお、XULオーバーレイでロードする.jsファイル内のコードで参照する場合は、
var 自分のグローバル変数={};
Components.utils.import("resource://アプリ名/ABCDEF.jsm.jsm",自分のグローバル変数);
というようにして、「自分のグローバル変数(==window.グローバル変数)」の中にロードしないと、
そのXULウィンドウに「window.共有する変数名」というグローバルオブジェクトが作られてしまいますから、ご注意を。
あるアドオンのchrome.manifest内の「resource アプリ名」は、ユニークであるべきはずなので、
他のアドオンからも、
Components.utils.import("resource://アプリ名/ABCDEF.jsm.jsm");
で、「共有する変数名」(==Object)を参照・変更できると思いますが、
他のアドオンのchrome.manifest内で、何らかの指定が必要かもしれません。