5

私の拡張機能は、ユーザーに何らかのサービスを提供する必要があり、その仕事の一部は、タブ作成イベントをリッスンすることです。popup.js にすべての JavaScript があり、chrome.tabs.onCreated.addListener(function(tab) {

問題は、ユーザーが拡張機能のシンボルをクリックした場合 (拡張機能を開いて popup.js をアクティブにした場合) にのみ、拡張機能がタブ作成イベントをリッスンし、ポップアップ画面が閉じられた場合、すべてのイベントのリッスンが停止することです。(コンソールに書き込むことで確認しましたが、それについて考えるのをやめれば理にかなっています)ユーザーが拡張機能をポップアップします。

バックグラウンド ページ と呼ばれるものがあることは知っていますが、コード全体をそこに移動する必要がありますか? バックグラウンドページのこの通常の慣行は?イベントリスナーがより多くの関数とオブジェクトに依存しているだけで、ほとんどすべてのコードがそこに行くようです。popup.js にはほとんど何も残されません。もう1つのことは、「domcontentloaded」イベントが発生する前にバックグラウンドページにイベントを登録できるかどうかわかりません(このイベントは、ユーザーが拡張機能をポップアップしたときにのみ発生します)。

どんな助けでも大歓迎です!

4

1 に答える 1

2

バックグラウンド ページは、これを処理するための最良の方法です。ブラウザの実行中にバックグラウンドで待機します。詳細な説明については、http://code.google.com/chrome/extensions/background_pages.htmlを参照してください。HTML ページである必要はなく、スクリプト ファイルだけでもかまいません。

ブラウザー アクションとは別に実行する必要があるものはすべて、バックグラウンド スクリプトに含める必要があります。ボタンをクリックするまで、ポップアップは基本的に存在しません。バックグラウンド スクリプトとポップアップの間でデータを渡すことができますが、必要な場合はhttp://code.google.com/chrome/extensions/messaging.htmlをご覧ください。

もう 1 つ注意すべき点は、バックグラウンド ページは DOM にアクセスできないことです。popup.js も問題にならないので、問題にならないかもしれません。

お役に立てれば!

于 2012-08-07T11:24:00.253 に答える