0

その他のjsファイルとは、popup.htmlに含めるファイルのことです。 次のコードは機能しますが、なぜバックグラウンド スクリプトを使用する必要があるのでしょうか?

コンテンツ スクリプト

chrome.extension.onMessage.addListener(
  function(request, sender, sendResponse) {
  //Some code
  }
);

popup.html に含まれるスクリプト

chrome.tabs.query({active:true,windowId: chrome.windows.WINDOW_ID_CURRENT},
  function(tab) {
    chrome.tabs.sendMessage(tab[0].id, {method: "someMethod"},
    function(response){
      //Some code
    });
  });

これ

4

1 に答える 1

2
  • バックグラウンド ページは、Chrome ブラウザがアクティブである限り存続します ( 「バックグラウンド」権限が設定されている場合はさらに長くなります)。ポップアップ ページは、バッジのポップアップが開いている場合にのみアクティブになります。ポップアップはユーザーのみが開くことができます。
  • バックグラウンド ページのドキュメントは表示されませんが、バッジのボタンをクリックするとポップアップ ページが表示されます。

それ以外は、バックグラウンド ページとポップアップ ページに違いはありません。これらは同じ拡張機能のプロセスで実行され、同じ API セットにアクセスできます。

ポップアップがアクティブな間だけ拡張機能をアクティブにする必要がある場合は、バックグラウンド ページは必要ありません。ポップアップの状態を保存するには、同期localStorageまたは非同期chrome.storageAPI を使用します。使用する変数が複雑すぎてどちらの API にも格納できない場合は、バックグラウンド ページが役立つことがあります。

バックグラウンド ページの使用が有益な例:
サーバーから巨大なテキスト ファイルをダウンロードする拡張機能を想像してみてください。リソースの作成は、サーバーのリソースを大量に消費します。技術的には、ポップアップ内からすべてを実行できます。ただし、タスクをバックグラウンド ページにオフロードすると、ユーザーはファイルのダウンロード中に他のタスクを実行できます (ポップアップのみを使用する場合、ユーザーがポップアップを閉じるとダウンロードが停止します)。


聞かれていませんが、イベント ページについてお知らせします。これらはバックグラウンド ページに似ていますが、1 つの違いがあります。拡張機能がアイドル状態になると、イベント ページは自動的に閉じられます。つまり、イベント ページは必要な場合にのみアクティブになります。これにより、拡張機能は、ユーザーのメモリを不必要に浪費することなく、バックグラウンド ページの利点を活用できます。

最後の例は、イベント ページを使用する必要がある場合の完璧な例でもあります。ポップアップに代わって http リクエストを実行する以外に、バックグラウンド ページは何もしません。バックグラウンド ページの代わりにイベント ページを使用すると、ダウンロードを中断せずにポップアップ ページを閉じることができ、拡張機能がメモリを無駄にしないという、両方の長所を活用できます。

ドキュメンテーション

于 2013-07-20T22:36:28.657 に答える