background
| 型別 | Object |
|---|---|
| 必填 | 否 |
| Manifest 版本 | 2 或更高 |
| 示例 |
json |
使用 background 鍵來包含一個或多個後臺指令碼、後臺頁面或 Service Worker 到您的擴充套件程式中。
後臺指令碼是存放需要維護長期狀態或執行長期操作的程式碼的地方,這些操作獨立於任何特定網頁或瀏覽器視窗的生命週期。
除非將 persistent 指定為 false,否則後臺指令碼會在擴充套件程式載入時立即載入,並一直保持載入狀態,直到擴充套件程式被停用或解除安裝。如果您請求了必要的 許可權,您可以在指令碼中使用任何 WebExtension API。
有關更多詳細資訊,請參閱 後臺指令碼。
background 鍵是一個物件,其中必須包含以下屬性之一(有關這些屬性的支援情況,請參閱 瀏覽器支援)
page |
如果您需要在後臺頁面中包含特定內容,可以使用 如果您使用此屬性,則不能使用 |
scripts |
一個 這些指令碼共享相同的 指令碼按其在陣列中出現的順序載入。 如果您指定了
注意: 如果您想透過 |
service_worker |
指定一個 JavaScript 檔案作為擴充套件程式的 Service Worker。Service Worker 是一個後臺指令碼,充當擴充套件程式的主要事件處理程式。 |
background 鍵還可以包含此可選屬性
persistent |
一個 如果省略,此屬性在 Manifest V2 中預設為
|
preferred_environment |
一個 如果
Chrome 只支援 Service Worker,因此會忽略此鍵。如果省略,Firefox 和 Safari 會將後臺指令碼作為文件執行。如果擴充套件程式指定了 |
type |
一個 確定
如果省略,此屬性預設為 |
瀏覽器支援
scripts、page 和 service_worker 屬性在不同瀏覽器中的支援情況如下:
- Chrome
- 支援
background.service_worker。 - 僅在 Manifest V2 擴充套件程式中支援
background.scripts(和background.page)。 - 在 Chrome 121 之前,Chrome 會拒絕載入包含
background.scripts或background.page的 Manifest V3 擴充套件程式。從 Chrome 121 開始,在 Manifest V3 擴充套件程式中存在這些屬性會被忽略。
- 支援
- Firefox
- 不支援
background.service_worker(請參閱 Firefox bug 1573659)。 - 如果未指定
service_worker或 service worker 功能被停用,則支援background.scripts(或background.page)。在 Firefox 120 之前,如果存在service_worker,Firefox 不會啟動後臺頁面(請參閱 Firefox bug 1860304)。從 Firefox 121 開始,無論是否存在service_worker,後臺頁面都會按預期啟動。
- 不支援
- Safari
- 支援
background.scripts(或background.page)和background.service_worker。 - 當兩者都指定時,Safari 會使用
background.scripts(或background.page),除非preferred_environment設定為service_worker。 - 當
preferred_environment設定為service_worker且未指定background.service_worker時,如果存在background.scripts,Safari 會從background.scripts生成一個 Service Worker。
- 支援
為了說明,這是一個支援 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/first-run.html" });
});
當擴充套件程式執行時,會發生以下情況:
- 在 Chrome 中,使用
service_worker屬性,並且會啟動一個 Service Worker 來開啟標籤頁,因為在 Manifest V3 擴充套件程式中,Chrome 只支援 Service Worker 作為後臺指令碼。 - 在 Firefox 中,使用
scripts屬性,並且會啟動一個指令碼來開啟標籤頁,因為 Firefox 只支援指令碼作為後臺指令碼。 - 在 Safari 中,使用
service_worker屬性,並且會啟動一個 Service Worker 來開啟標籤頁,因為 Safari 優先使用 Service Worker 作為後臺指令碼。
示例
"background": {
"scripts": ["jquery.js", "my-background.js"]
}
載入兩個後臺指令碼。
"background": {
"page": "my-background.html"
}
載入自定義後臺頁面。
瀏覽器相容性
載入中…