我正在创建我的第一个chrome应用程序(浏览器操作)。我相信背景页面应该在后台一直执行。例如,如果我写了像
这样的东西window.setTimeout(getFeed, 30000);
应每30秒自动调用此方法并刷新Feed数据。但似乎该方法仅在我通过单击浏览器中的扩展名图标打开扩展的弹出页面时执行。这是理想的行为,还是我在这里遗漏了什么。
答案 0 :(得分:2)
首先,您希望setInterval
代表定期事件,而不是setTimeout
,它只会触发一次。
也就是说,后台页面中的getFeed
功能可能无法访问您希望它更新的元素。后台页面不能访问其他上下文中的元素或变量,例如选项卡,弹出窗口或内容脚本。可能需要在您的背景页面和包含您要更新的Feed的页面之间使用message passing。
在包含Feed的扩展程序页面上,使用chrome.extension.onRequest.addListener
功能设置消息监听器,并在后台页面中使用chrome.extension.sendRequest
推出包含Feed数据的消息。您只需要编写一个使用消息监听器捕获的数据更新提要的函数。
如果没有看到更多代码,我无法给你更具体的建议,但message passing几乎肯定是解决问题的一种方法。