0

私は最初のChromeアプリケーション(ブラウザアクション)を作成しています。バックグラウンドページは常にバックグラウンドで実行されている必要があると思います。たとえば、私が次のようなものを書いた場合

window.setTimeout(getFeed, 30000);

このメソッドは30秒ごとに自動的に呼び出され、フィードデータを更新する必要があります。しかし、ブラウザで拡張機能のアイコンをクリックして拡張機能のポップアップページを開いた場合にのみ、メソッドが実行されるようです。それは望ましい動作ですか、それともここで何かが欠けていますか?

4

1 に答える 1

2

まず、 1回だけ発生するでsetIntervalはなく、定期的なイベントが必要です。setTimeout

getFeedはいえ、バックグラウンドページの関数は、更新する要素にアクセスできない可能性があります。バックグラウンドページは、タブ、ポップアップ、コンテンツスクリプトなど、他のコンテキストの要素や変数にアクセスできません。バックグラウンドページと更新するフィードのあるページの間でメッセージパッシングを使用する必要がある場合があります。

フィードのある拡張ページで、chrome.extension.onRequest.addListener関数を使用してメッセージリスナーを設定し、バックグラウンドページで、を使用してフィードデータを含むメッセージをプッシュしますchrome.extension.sendRequest。メッセージリスナーによってキャッチされたデータを使用してフィードを更新する関数を作成する必要があります。

あなたのコードをもっと見ることなしに、私はあなたにもっと具体的なアドバイスを与えることはできませんが、メッセージパッシングはほぼ確実にあなたの問題を解決する一つの方法です。

于 2012-04-17T13:28:15.433 に答える