2012-04-17 166 views
0

我正在創建我的第一個Chrome應用程序(瀏覽器操作)。我相信後臺頁面應該在後臺執行。例如,如果我寫的東西類似Chrome擴展程序背景頁面

window.setTimeout(getFeed, 30000); 

應該每30秒自動調用一次此方法並刷新饋送數據。但似乎只有當我通過點擊瀏覽器中的擴展名圖標打開擴展的彈出頁面時才執行該方法。這是期望的行爲還是我在這裏錯過了一些東西。

回答

2

首先,你想要週期性事件爲setInterval,而不是setTimeout,它只會觸發一次。

也就是說,您的後臺頁面中的getFeed函數可能無法訪問您希望更新的元素。後臺頁面不能訪問其他上下文中的元素或變量,例如選項卡,彈出窗口或內容腳本。可能有必要在您的背景頁面和該頁面之間使用message passing以更新您想要更新的Feed。

在帶有供稿的擴展頁面上,使用chrome.extension.onRequest.addListener函數設置消息偵聽器,並在背景頁面中使用chrome.extension.sendRequest推送包含供稿數據的消息。您只需編寫一個函數,使用消息偵聽器捕獲的數據更新提要。

沒有看到更多的代碼我不能給你更具體的建議,但message passing幾乎肯定是解決你的問題的一種方法。

+0

啊那是非常基本的錯誤。 getFeed不訪問彈出頁面中的任何內容。它只是在後臺刷新最新的提要並保存在一個對象中,後來在彈出頁面中使用此背景頁面的對象來更新彈出窗口中的UI元素。不過,非常感謝幫助 – 2012-04-17 17:58:44

相關問題