Skip to main content

划词翻译将开始逐步迁移到 Manifest V3

· 5 min read
这篇公告已经失效

Chrome 将在 2023 年 6 月下架并禁用所有 Manifest V2 扩展程序,为此划词翻译将开始逐步迁移到 Manifest V3,这会对划词翻译造成一些影响。

虽然这是 Chrome 做出的决定,但 Edge 和 Firefox 也同样会受到影响。

迁移过程

迁移过程会分为两个步骤:

  1. 先对部分代码进行改造,尽可能让这些代码可以同时运行在 Manifest V2 和 Manifest V3 里。
    • 比如 v9.1.0 里对谷歌翻译的代码做了改造、v9.2.0 里对 DeepL 的代码做了改造
    • 改写过后的代码会发布到划词翻译的新版本当中,你会经常在更新日志里看到“对部分代码 / xxx 功能进行 Manifest V3 改造”的条目。
  2. 当剩下的改造能且只能在 Manifest V3 里进行时,划词翻译会发布一个新的大版本(初步计划为 v11.0.0 版本)并正式切换为 Manifest V3。

影响如下

我明白这些改动会影响到你的使用体验,但是为了避免被 Chrome 下架 / 禁用,我不得不做这些事情。

随着迁移工作的进行:

  • 划词翻译可能会出现 bug。
    • 比如 v9.1.0 中谷歌翻译会出现 Unexpected token < in JSON at position 0 报错就是因为我对谷歌翻译的相关代码进行了 Manifest V3 改造。这个问题已在 v9.1.1 中修复。
    • 若划词翻译在迁移过程中出现了 bug,你可以临时回退到旧版本,见下载离线安装包手动安装划词翻译

当划词翻译切换为 Manifest V3 之后:

  • 你需要将 Chrome / Edge 浏览器升级到至少 v109 版本才能运行划词翻译。
    • Firefox 浏览器的最低版本号要求暂时未知。

为什么会有这些影响?

通俗易懂的解释

你可以把划词翻译这类扩展程序想象成“汽车”,把 Chrome 浏览器想象成提供“发动机”和管理汽车标准的人。

Chrome 通知我们这些生产“汽车”的人说,我使用“旧发动机”(代号为 Manifest V2)开发的“汽车”,放在现在不符合要求了(比如不够环保、占用太多资源等),所以要求我换成“新发动机”(代号为 Manifest V3),而 Chrome 会在 2023 年 6 月后禁止所有还在用“旧发动机”的“汽车”上路。

但是,Chrome 提供的“新发动机”并不兼容“旧发动机”,以至于升级成“新发动机”不得不对车里的很多零件做调整,虽然外形上没有变化,但内部做了非常多的改造,所以难免会出现 bug。

技术术语解释

在 Manifest V2 中,背景页是一个网页,有 DOM 环境、能持续存在,但在 Manifest V3 中,背景页变成了 Service Worker,它没有 DOM 环境,每隔 5 分钟还会被 Chrome 强制关闭一次。

为此,代码不得不做非常大的调整来适配 Service Worker,这就导致了代码会出现 bug 等。

详细解释见 https://github.com/lmk123/blog/issues/121

为什么 Edge 和 Firefox 也会受到影响?

Edge 的内核是 Chrome,所以当 Chrome 禁用 Manifest V2 扩展程序时,Edge 也同样会禁用。

Firefox 虽然没有准备禁用 Manifest V2 的扩展程序,但是:

  • 我没有精力维护两种版本的划词翻译。
  • Firefox 也正在支持 Manifest V3,切换到 Manifest V3 是迟早的事。

相关资料