Firefox アドオン用に Chrome のリクエスト/レスポンス API を模倣するライブラリを作成しました。明らかに、バックグラウンド プロセス (main.js) とコンテンツ スクリプトの両方でこのコードを使用する必要があります。確かに、インポートされたモジュールを文字列化するよりも良い方法があるに違いありません。
質問する
387 次
1 に答える
2
SDKコードモジュールのURLを取得するための半文書化された方法があります。これには、安定性が保証されていない低レベルのモジュールが含まれます。実際、SDKのこの部分が変更され、このソリューションが機能しなくなる可能性が非常に高くなります(最初にここに示したソリューションのように)。
loader
そうは言っても、SDKを使用するとモジュールにアクセスできます。したがって、最初に、SDKで使用されるものと同じオプションを使用してローダーを構築する必要があります。resolveURI
次に、ユーティリティ関数を使用して、このローダーのマッピングを使用してモジュール名を解決する必要があります。
var {Loader, resolveURI} = require('toolkit/loader');
var options = require('@loader/options');
var loader = Loader(options);
var fooURI = resolveURI("./foo", loader.mapping);
上記のコードは、モジュールのURLを生成しますfoo
。モジュールはどこかで使用する必要があることに注意してくださいfoo
。そうしないと、拡張機能に含まれません。まだ使用していない場合は、ダミー関数で十分です。
function dummy()
{
require("foo");
}
結果のURLをコンテンツスクリプトとして使用すると、問題なく機能します。
var pageMod = require("page-mod");
pageMod.PageMod({
include: "*.google.com",
contentScriptWhen: 'end',
contentScriptFile: [fooURI, ...]
});
于 2012-07-10T09:57:28.987 に答える