如何使 chrome 分机永久有效

How to make chrome extension active permanent

我正在 chrome 中构建一个扩展,但如果我不打开插件的调试模式,它总是处于非活动状态,这会导致当我进入目标页面时插件无法正常工作,例如:dms.mydomain-inc.com

如何在manifest.json访问页面注册时使其永久有效? 这是我的 manifest.json

{
    "name": "Tool for test",
    "description": "Build an Extension!",
    "version": "1.0",
    "manifest_version": 3,
    "background": {
      "service_worker": "background.js",
      "persistent": true
    },
    "options_page": "options.html",
    "permissions": ["storage", 
        "activeTab", 
        "scripting",
        "webRequest"],
    "host_permissions": [
        "*://*.mydomain.vn/*",
        "*://dms.mydomain-inc.com/",
        "wss://news.mydomain-inc.com/"
        ],
    "content_scripts": [
        {
            "matches": ["*://news.mydomain-inc.com/"],
            "css": ["css/style.css"],
            "js": ["contentScript.js", "jquery-3.5.1.min.js"]
        }
        ],
    "action": {
      "default_popup": "popup.html",
      "default_icon": {
        "16": "/images/get_started16.png",
        "32": "/images/get_started32.png",
        "48": "/images/get_started48.png",
        "128": "/images/get_started128.png"
      }
    },
    "icons": {
      "16": "/images/get_started16.png",
      "32": "/images/get_started32.png",
      "48": "/images/get_started48.png",
      "128": "/images/get_started128.png"
    }
  }

谢谢

开发清单版本 3 扩展是正常的事情。 Chrome 正在成为一款轻巧的浏览器,部分原因是用户安装了数十个扩展。 因此 Google 在扩展中引入了 service worker 以便尽可能释放一些内存。 SW 在必要时被激活,然后进入休眠状态,直到它被唤醒以执行新工作。

这样说,

  1. "persistent": true 清单中的内容无用,可能会产生错误。
  2. 我们必须意识到,当 SW 变为非活动状态时,此脚本中定义的所有变量和对象都将丢失,除非我们计划以某种方式将它们保存在持久性存储中。 通常,异步chrome.storageAPI用于保存SW中使用的变量\对象
  3. 如果您不能让 SW 变为非活动状态(出于某些重要原因),您可以使用绕过此“限制”的“肮脏”技术。 该技术包括打开一个持久的通信通道并在 SW 和任何浏览器选项卡之间发送虚构的消息。 有关此技术的更多详细信息,请阅读此线程: