3

Firefox アドオン用に Chrome のリクエスト/レスポンス API を模倣するライブラリを作成しました。明らかに、バックグラウンド プロセス (main.js) とコンテンツ スクリプトの両方でこのコードを使用する必要があります。確かに、インポートされたモジュールを文字列化するよりも良い方法があるに違いありません。

4

1 に答える 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 に答える