【问题标题】:chrome.runtime.onInstalled.addListener manifest version 3 migration from version 2chrome.runtime.onInstalled.addListener 清单版本 3 从版本 2 迁移
【发布时间】: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个问题:

  1. 我相信我需要这个,还是我需要?因此,当扩展程序在 chrome 商店和浏览器中更新时,这会导致 Chrome - Gmail 重新加载并使用最新版本。如果我在这个假设中错了,请纠正我。如果我处于开发者模式 (chrome://extensions),使用解压版本,使用刷新按钮将重新加载扩展程序和 Gmail。
  2. 我无法弄清楚 Service Worker 将如何工作,因为它们本质上不是持久的,而且这个“监听器”需要一直在监听。 有人有从版本 2 迁移到 3 的 service worker/background.js 的示例吗?

更多信息:Migrating from background pages to service workers

谢谢。

【问题讨论】:

    标签: javascript google-chrome google-chrome-extension service-worker


    【解决方案1】:

    听起来你是这篇写得不好的文档文章的受害者:作者是一名网络开发人员,他似乎认为有必要强调服务工作者是不同的更好的东西,而它在概念上与 @987654321 相同@(又名“非持久性后台脚本”),我们在过去的这些年里一直在使用。

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

    附:您的服务人员代码错误地添加了[]。这是正确的代码:

    "background": {
      "service_worker": "background.js"
    },
    

    【讨论】:

      【解决方案2】:

      如下: chrome.tabs.query({url: "https://mail.google.com/*"}, function(tab) {

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

      "permissions": ["tabs"],

      到清单,一切正常!奇怪的是使用版本 2 我不需要这个权限。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-27
        • 1970-01-01
        • 2020-11-28
        • 1970-01-01
        • 2021-04-01
        相关资源
        最近更新 更多