Javascript chrome.runtime.onInstalled.addListener清单版本3从版本2迁移

Javascript chrome.runtime.onInstalled.addListener清单版本3从版本2迁移,javascript,google-chrome,google-chrome-extension,service-worker,Javascript,Google Chrome,Google Chrome Extension,Service Worker,我有一个2年的Gmail chrome扩展,我正在更新到第3版。 我使用iframes将JSON数据传输到服务器或从服务器传输JSON数据,这在使用版本2或3时运行良好 我遇到的问题是background.js(适用于版本2) //background.js在安装或刷新扩展时重新加载gmail chrome.runtime.onInstalled.addListener(函数(){ chrome.tabs.query({url:https://mail.google.com/*“},函数(选项卡

我有一个2年的Gmail chrome扩展,我正在更新到第3版。 我使用iframes将JSON数据传输到服务器或从服务器传输JSON数据,这在使用版本2或3时运行良好

我遇到的问题是background.js(适用于版本2)

//background.js在安装或刷新扩展时重新加载gmail
chrome.runtime.onInstalled.addListener(函数(){
chrome.tabs.query({url:https://mail.google.com/*“},函数(选项卡){
if(typeof选项卡[0].url!=“未定义”&&tab[0].url.indexOf('https://mail.google.com') == 0 ) {
chrome.tabs.reload(tab[0].id);
}
});
});
在清单V2中声明如下:

“背景”:{
“脚本”:[“background.js”],
“持久”:false//true
},
在清单V3中,我们现在必须使用服务工作者:

“背景”:[{
“服务工人”:“background.js”
}],
有两个问题:

  • 我相信我需要这个还是我需要?因此,当扩展在chrome商店和浏览器中更新时,这会导致chrome-Gmail重新加载并使用最新版本。如果我这个假设错了,请纠正我。如果我处于开发模式(chrome://extensions)使用“刷新”按钮使用未打包的版本将重新加载扩展名和Gmail
  • 我想不出一个服务人员是如何工作的,因为他们天生就不执着,而这个“监听器”需要一直在听。 有没有人举过service worker/background.js从版本2迁移到版本3的例子
  • 进一步资料:


    谢谢。

    听起来你是这篇写得很差的文档文章的受害者:作者是一名web开发人员,似乎认为有必要强调服务人员是不同的、更好的东西,而它在概念上与(也称为“非持久性背景脚本”)相同这些年来我们一直在使用的

    由于您已经在使用事件页面,您只需继续执行以前的操作:注册API事件处理程序,如chrome.runtime.onInstalled或chrome.tabs.onUpdated,以便chrome在内部记住注册。当worker在30秒不活动后终止时,如果您订阅的事件发生,Chrome将启动worker,整个脚本将再次运行,然后将调用您的侦听器。重申一下,这与事件页面的工作原理完全相同

    注意:您的服务人员代码错误地添加了
    [
    ]
    。以下是正确的代码:

    “背景”:{
    “服务工人”:“background.js”
    },
    
    如下所示: chrome.tabs.query({url:https://mail.google.com/*“},函数(选项卡){

    “标签”未定义,所以我添加了

    “权限”:[“选项卡],

    到清单和所有作品好!奇怪的是使用版本2我不需要这个权限

    还要感谢@wOxxOm为我指明了正确的方向