1

私は Android 用の firefox のブートストラップ拡張機能に取り組んでおり、js ファイルを bootstap.js にインポートしたいと考えています (xul 拡張機能でコンポーネントをインポートするなど)。chrome.manifest を使用してリソース エイリアスを使用する従来の方法は、ブートストラップされた拡張機能では許可されていません。Erik Vold のこのコードを試しましたが、うまくいかないようです

function startup(data) AddonManager.getAddonByID(data.id, function(addon) {
// Include some utility functions
include(addon.getResourceURI("includes/scanner.js").spec);
});

助けていただき、本当に感謝しています。

4

2 に答える 2

4

実際、かなり前からブートストラップ アドオンでcontentサポートされています (最初は Gecko 8 で、Gecko 10 以降では、マニフェスト (IIRC) を自動ロードします)。リソース URI からだけでなく、js コード モジュールをロードできますchrome://yourpackage/content/...(Gecko 4、IIRC 以降)。したがって、mozilla スタイルのコード モジュールの使用を妨げるものは何もありません。また、いくつかのアドオンは手動でresource置換を追加します。

Erik が書いたものは、対応する bootstrap.js using で実装されたカスタムinclude関数loadSubScriptを使用します。それも選択肢です。このスキームは、ブートストラップされたアドオンから js コード モジュールを適切に使用することがまだできなかったときに考案されましたCu.unload

content++を使用するのがおそらく最も簡単な方法ですCu.importCu.unload

私自身のアドオン (デスクトップ + Android) の実際の例 (アドオンの残りの部分は、カスタムの commonjs スタイルのrequireローダーを使用して記述されているため、それに惑わされないでください)。

于 2013-08-12T14:42:55.130 に答える
0

私はそれを行うためにこの方法を見つけました:

    var IncludedFile={};
    Services.scriptloader.loadSubScript(aData.resourceURI.spec + "content/fileName.js", IncludedFile);

次に、次のようにメソッドにアクセスできます。

    IncludedFile.someFunction;
于 2013-08-21T15:09:33.317 に答える