background
类型 | 对象 |
---|---|
必填 | 否 |
清单文件版本 | 2 或更高 |
示例 |
json
|
使用background
键在扩展中包含一个或多个后台脚本、一个后台页面或一个服务工作线程。
后台脚本是放置需要维护长期状态或执行独立于任何特定网页或浏览器窗口生命周期的长期操作的代码的地方。
后台脚本在扩展加载后立即加载,并一直保持加载状态,直到扩展被禁用或卸载,除非将persistent
指定为false
。如果你已请求必要的权限,则可以在脚本中使用任何 WebExtension API。
请参阅后台脚本以获取更多详细信息。
background
键是一个对象,必须具有以下属性之一(有关如何支持这些属性的更多信息,请参阅浏览器支持)
page |
如果后台页面需要特定内容,可以使用 如果使用此属性,则不能使用 |
scripts |
一个 这些脚本共享相同的 脚本按照它们在数组中出现的顺序加载。 如果指定
注意:如果要使用 |
service_worker |
指定一个 JavaScript 文件作为扩展服务工作线程。服务工作线程是一个后台脚本,充当扩展的主要事件处理程序。 |
background
键还可以包含此可选属性
persistent |
一个 如果省略,此属性在清单文件 V2 中默认为
|
type |
一个 确定在
如果省略,此属性默认为 |
浏览器支持
对scripts
、page
和service_worker
属性的支持在浏览器之间有所不同,如下所示
- Chrome
- 支持
background.service_worker
。 - 仅在清单文件 V2 扩展中支持
background.scripts
(和background.page
)。 - 在 Chrome 121 之前,Chrome 拒绝加载带有
background.scripts
或background.page
的清单文件 V3 扩展。从 Chrome 121 开始,它们在清单文件 V3 扩展中的存在将被忽略。
- 支持
- Firefox
- 不支持
background.service_worker
(请参阅Firefox 错误 1573659)。 - 如果未指定
service_worker
或服务工作线程功能被禁用,则支持background.scripts
(或background.page
)。在 Firefox 120 之前,如果存在service_worker
,Firefox 不会启动后台页面(请参阅Firefox 错误 1860304)。从 Firefox 121 开始,无论是否存在service_worker
,后台页面都会按预期启动。
- 不支持
- Safari
- 支持
background.service_worker
。 - 如果未指定
service_worker
,则支持background.scripts
(或background.page
)。
- 支持
为了说明,这是一个支持scripts
和service_worker
的简单跨浏览器扩展示例。该示例具有此 manifest.json 文件
{
"name": "Demo of service worker + event page",
"version": "1",
"manifest_version": 3,
"background": {
"scripts": ["background.js"],
"service_worker": "background.js"
}
}
并且,background.js 包含
if (typeof browser == "undefined") {
// Chrome does not support the browser namespace yet.
globalThis.browser = chrome;
}
browser.runtime.onInstalled.addListener(() => {
browser.tabs.create({ url: "http://example.com/firstrun.html" });
});
执行扩展时,会发生以下情况
- 在 Chrome 中,使用
service_worker
属性,并启动一个服务工作线程以打开标签页,因为在清单文件 V3 扩展中,Chrome 仅支持服务工作线程作为后台脚本。 - 在 Firefox 中,使用
scripts
属性,并启动一个脚本以打开标签页,因为 Firefox 仅支持脚本作为后台脚本。 - 在 Safari 中,使用
service_worker
属性,并启动一个服务工作线程以打开标签页,因为 Safari 优先使用服务工作线程作为后台脚本。
示例
"background": {
"scripts": ["jquery.js", "my-background.js"]
}
加载两个后台脚本。
"background": {
"page": "my-background.html"
}
加载自定义后台页面。
浏览器兼容性
BCD 表格仅在浏览器中加载