2012-04-17 21 views
0

初めてのChromeアプリケーション(ブラウザアクション)を作成しています。私はバックグラウンドページがバックグラウンドで常に実行されるべきだと考えています。例えば、次のように書く場合Chrome拡張機能の背景ページ

window.setTimeout(getFeed, 30000); 

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

答えて

2

まず、setIntervalは定期的なイベントであり、setTimeoutではなく、1回だけ発生します。

つまり、背景ページのgetFeed機能は、更新したい要素にアクセスできない可能性があります。背景ページは、タブ、ポップアップ、コンテンツスクリプトなどの他のコンテキスト内の要素または変数にアクセスすることはできません。バックグラウンドページと更新したいフィードとの間にmessage passingを使用する必要があるかもしれません。

フィード付きの拡張ページで、chrome.extension.onRequest.addListener関数を使用してメッセージリスナーを設定し、背景ページでchrome.extension.sendRequestを使用してフィードデータを含むメッセージをプッシュアウトします。メッセージリスナーが捕捉したデータを使用してフィードを更新する関数を書くだけで済みます。

あなたのコードの多くを見ることなく、より具体的な助言を与えることはできませんが、message passingはほぼ確実にあなたの問題を解決する方法の1つです。

+0

ああ、それは非常に基本的な間違いだった。 getFeedはポップアップページから何もアクセスしていません。バックグラウンドで最新のフィードをリフレッシュしてオブジェクトに保存し、後でポップアップページでこの背景ページのオブジェクトを使用してポップアップでui要素を更新します。しかし、助けてくれてありがとう –

関連する問題