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