0

異なる URL パターンに一致する 2 つのページ mod を持つ拡張機能を作成しているとします。これらは重複する場合があります。両方のページ MOD がいくつかの JS ライブラリを共有している場合、拡張機能がそれらの共有 JS ライブラリを特定のページに 1 回だけロードし、両方のページ MOD でそれらを使用する方法はありますか?

拡張機能がページにロードする各ページ mod は、コード共有を妨害する独自のグローバル スコープ/名前空間を取得するように私には思えます。ただし、ドキュメントは、同じページ内のコンテンツ スクリプトが相互に直接アクセスできる必要があることを示しているようです。

同じドキュメントにロードされたコンテンツ スクリプトは、相互に直接対話するだけでなく、Web コンテンツ自体と対話することもできます。

4

1 に答える 1

0

同じドキュメントにロードされたコンテンツ スクリプトは、同じ PageMod インスタンスを介してロードされている限り、Web コンテンツ自体と同様に相互に直接やり取りできます。

これが、PageMod の contentScriptFile オプションが複数のファイルをリストできる配列を受け取る理由です。これにより、たとえば jQuery をロードし、独自の別のコードで jQuery を使用できます。

各 PageMod が個別のサンドボックスにロードされるため、複数の PageMod インスタンスに共有スコープを持たせることはうまくいきません。

簡単な通信が必要な場合、考えられる回避策は、SDK の EventEmitter 'port' オブジェクトを介して別の PageMod インスタンスからメッセージをルーティングすることです。

残念ながら、サンドボックス間で共有されるスコープがないため、サンドボックス間でスクリプト リソースを共有する方法はありません。

于 2013-01-07T22:26:18.243 に答える