Chrome 120 现已推出 Beta 版,其中包含许多面向 Chrome 扩展程序开发者的精彩更新。
这一年里,Chrome 扩展程序团队很忙。在昨天发布的 Chrome 120 Beta 版中,扩展程序平台又向前迈进了一大步。如需简要了解今年发生的变化,请查看我们在 7 月和 10 月发布的季度更新。请继续阅读,了解 Chrome 120 for Extensions 包含的新功能。
缩小平台差距
随着 Chrome 120 的发布,我们将逐步填补 Manifest V3 已知问题页面中列出的其余平台问题。新的 userScript API 以及对 ChromeOS 中的文件处理功能的支持现在是可以划掉的另外两个。 结合上一季度更新中所述的变化,我们对 Chrome 扩展程序平台的当前状态以及我们在过去一年取得的成就非常满意。
新的 userScripts API
用户脚本支持已发布!用户脚本是(通常相对较小)的代码段,扩展程序可将其注入网页,以便修改网页的外观或行为。它们可以直接由用户创建,也可以在网络中众多不同的用户脚本存储库中找到。从 Chrome 120 Manifest V3 扩展程序开始,您现在可以管理用户脚本的集合,并确定何时以及如何在网页上注入这些脚本。
Manifest V2 和 Manifest V3 支持的用户脚本有一个明显的不同之处。由于用户脚本功能强大,需要非常信任用户脚本的作者,因此 Chrome 团队决定,用户必须选择启用开发者模式,然后才能运行用户脚本。
![“附加信息”页面](https://developer.chrome.google.cn/static/blog/chrome-120-beta-whats-new-for-extensions/image/extensions-page-df77624dbaf7e.png?authuser=3&hl=da)
我们新推出的 userScript 示例展示了一种用于检测开发者模式是否已启用的简单方法,并提供了简单的初始配置流程。
![用户脚本的新手入门流程示例。](https://developer.chrome.google.cn/static/blog/chrome-120-beta-whats-new-for-extensions/image/sample-onboarding-flow-u-cd28bdd7c186a.png?authuser=3&hl=da)
静态 DNR 规则集上限较高
我们将启用的静态规则集的上限从 10 大幅提高到了 50。此外,我们还将允许的静态规则集总数从 50 增加到了 100。这是根据我们在 Web Extensions 社区群组中收到的反馈做出的。
新增 ReadingList API
Chrome 于 2021 年推出了阅读清单。去年,Chrome 团队通过侧边栏让访问阅读清单变得更加轻松。在 Chrome 120 中,我们为 Chrome 扩展程序添加了创建、读取、更新和删除阅读清单条目的功能。如需了解详情,请参阅 API 文档和我们的新示例。
![Chrome 的阅读清单,其中显示的是扩展程序文档页面。](https://developer.chrome.google.cn/static/blog/chrome-120-beta-whats-new-for-extensions/image/chromes-reading-list-sho-e4bf148564009.png?authuser=3&hl=da)
ChromeOS 上的文件处理
借助文件处理功能,扩展程序能够以与网络平台文件处理类似的方式打开具有指定 MIME 类型和文件扩展名的文件。请查看 ChromeOS 上的文件处理功能,详细了解如何使用该工具。
![在 ChromeOS 上打开带扩展程序的文件对话框的屏幕截图](https://developer.chrome.google.cn/static/blog/chrome-120-beta-whats-new-for-extensions/image/screenshot-the-open-file-99fed57d1a582.png?authuser=3&hl=da)
在 30 秒后触发闹钟
这是一个小幅更新,但解决了 Service Worker 生命周期中的一个重要差距。由于 Service Worker 的事件驱动性质,将来触发事件的建议方法是使用 chrome.alarms
。Alarms API 可确保即使 Service Worker 在此期间关闭也能触发事件。
不过,这其中存在一个问题。在 Chrome 120 之前,触发闹钟的最短时间间隔为 1 分钟。不过,Service Worker 将在处于非活动状态 30 秒后关闭。因此,没有简单直接的方法可以将闹钟安排在 45 秒内触发,因为使用 setTimeout()
在 45 秒内设置事件时,Service Worker 可能会在事件触发之前关闭。
从 Chrome 120 开始,您现在可以在以下两种方式中触发事件:
- 不到 30 秒(使用
setTimeout()
)。 - 使用
chrome.alarms
上传任何时长不低于 30 秒的内容:
await chrome.alarms.create('demo-default-alarm', {
periodInMinutes: 0.45
});
摘要
我们非常高兴看到扩展程序平台在过去一年中取得的进展。Chrome 120 是提高 DNR 上限和用户脚本支持的又一重大举措。