【发布时间】:2021-02-19 03:53:31
【问题描述】:
我有一个 2 年前的 Gmail chrome 扩展程序,我正在更新到版本 3。 我使用 iframe 向/从我的服务器传输 JSON 数据,这在使用版本 2 或 3 时效果很好。
我遇到的问题是 background.js(适用于版本 2)
//background.js reloads gmail when extension installed or refreshed
chrome.runtime.onInstalled.addListener(function(){
chrome.tabs.query({url: "https://mail.google.com/*"}, function(tab) {
if ( typeof tab[0].url != 'undefined' && tab[0].url.indexOf('https://mail.google.com') == 0 ) {
chrome.tabs.reload(tab[0].id);
}
});
});
在清单 V2 中,它是这样声明的:
"background": {
"scripts": ["background.js"],
"persistent": false //true
},
在 manifest V3 中,我们现在必须使用 service worker:
"background": [{
"service_worker": "background.js"
}],
有2个问题:
- 我相信我需要这个,还是我需要?因此,当扩展程序在 chrome 商店和浏览器中更新时,这会导致 Chrome - Gmail 重新加载并使用最新版本。如果我在这个假设中错了,请纠正我。如果我处于开发者模式 (chrome://extensions),使用解压版本,使用刷新按钮将重新加载扩展程序和 Gmail。
- 我无法弄清楚 Service Worker 将如何工作,因为它们本质上不是持久的,而且这个“监听器”需要一直在监听。 有人有从版本 2 迁移到 3 的 service worker/background.js 的示例吗?
更多信息:Migrating from background pages to service workers
谢谢。
【问题讨论】:
标签: javascript google-chrome google-chrome-extension service-worker