MozillaZine.jp フォーラム
https://forums.mozillazine.jp/

Add-on Builderで Private Libraryを参照する方法を教えていただけないでしょうか?
https://forums.mozillazine.jp/viewtopic.php?f=26&t=13106
ページ 11

作成者:  バッキー [ 2012年6月15日(金) 22:30 ]
記事の件名:  Add-on Builderで Private Libraryを参照する方法を教えていただけないでしょうか?

Mozilla Add-on Builderの初心者です。
少しずつ勉強して GUIを持たない拡張機能を作れるようになってきました。

汎用的に利用する関数群を Private Libraryとしてまとめましたが、
Private Addonで参照させる方法がわかりません。

操作方法あるいは設定方法、ドキュメントの場所などを教えていただけると助かります。

P.S.
Mozilla Add-on Builderの基本的な操作方法をまとめてみました。
http://backy0175.at.webry.info/201206/article_8.html

作成者:  バッキー [ 2012年6月21日(木) 10:32 ]
記事の件名:  Re: Add-on Builderで Private Libraryを参照する方法を教えていただけないでしょうか?

返信が付きませんし、不具合のようなので bugzillaに報告しました。

https://bugzilla.mozilla.org/show_bug.cgi?id=766809


尚、暫定的な対処として次のようにやってます。

1. 一時的に Public Libraryに変更する
2. Add-on Builderの Editorで ライブラリを追加する
3. Public Libraryを Private Libraryに戻す

※ 一度ライブラリを追加できると、Private Libraryに戻しても適切に Libraryを参照できてます。

作成者:  WADA [ 2014年3月07日(金) 13:09 ]
記事の件名:  Re: Add-on Builderで Private Libraryを参照する方法を教えていただけないでしょうか?

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内で、何らかの指定が必要かもしれません。

作成者:  バッキー [ 2014年3月07日(金) 22:21 ]
記事の件名:  Re: Add-on Builderで Private Libraryを参照する方法を教えていただけないでしょうか?

WADAさん、返信ありがとうございます。

返信してくださった内容は Overlay Extensions(XUL)に関する情報なので、残念ながら Add-on Builderで作成する拡張機能には適用できないんです。
もっとも、適用できたとしても Add-on Builderはサービスを終了するのでこの質問自体が無意味になってしまいましたが、、、

ページ 11 All times are UTC + 9 hours
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/