2012-04-17 139 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

相关问题