background
| Typ | Object |
|---|---|
| Verpflichtend | Nein |
| Manifest-Version | 2 oder höher |
| Beispiel |
json |
Verwenden Sie den background-Schlüssel, um ein oder mehrere Hintergrundskripte, eine Hintergrundseite oder einen Service Worker in Ihre Erweiterung aufzunehmen.
Hintergrundskripte sind der Ort, an dem Sie Code platzieren, der einen langfristigen Zustand aufrechterhalten oder langfristige Operationen unabhängig von der Lebensdauer bestimmter Webseiten oder Browserfenster ausführen muss.
Hintergrundskripte werden geladen, sobald die Erweiterung geladen wird, und bleiben geladen, bis die Erweiterung deaktiviert oder deinstalliert wird, es sei denn, persistent ist als false angegeben. Sie können alle WebExtension-APIs im Skript verwenden, wenn Sie die erforderlichen Berechtigungen angefordert haben.
Siehe Hintergrundskripte für weitere Details.
Der background-Schlüssel ist ein Objekt, das eine dieser Eigenschaften haben muss (für weitere Informationen dazu, wie diese Eigenschaften unterstützt werden, siehe Browser-Unterstützung):
page |
Wenn Sie spezifische Inhalte auf der Hintergrundseite benötigen, können Sie eine Seite mit der Eigenschaft
Wenn Sie diese Eigenschaft verwenden, können Sie keine Hintergrundskripte mit |
scripts |
Ein Die Skripte teilen sich den gleichen globalen Kontext Die Skripte werden in der Reihenfolge geladen, in der sie im Array erscheinen.
Wenn Sie
Hinweis: Wenn Sie ein Skript von einem entfernten Standort mit dem |
service_worker |
Geben Sie eine JavaScript-Datei als Erweiterungs-Service Worker an. Ein Service Worker ist ein Hintergrundskript, das als Hauptereignishandler der Erweiterung fungiert. |
Der background-Schlüssel kann auch diese optionale Eigenschaft enthalten:
persistent |
Ein Wenn weggelassen, ist diese Eigenschaft in Manifest V2 standardmäßig
|
preferred_environment |
Ein Wenn
Chrome unterstützt nur Service Worker und ignoriert daher diesen Schlüssel. Wenn weggelassen, führen Firefox und Safari Hintergrundskripte als Dokumente aus. Safari verwendet einen Service Worker-Kontext, wenn die Erweiterung |
type |
Ein Bestimmt, ob die in
Wenn weggelassen, ist diese Eigenschaft standardmäßig |
Browser-Unterstützung
Die Unterstützung für die Eigenschaften scripts, page und service_worker variiert zwischen den Browsern folgendermaßen:
- Chrome:
- unterstützt
background.service_worker. - unterstützt
background.scripts(undbackground.page) nur in Manifest V2-Erweiterungen. - vor Chrome 121 lehnt Chrome das Laden einer Manifest V3-Erweiterung mit
background.scriptsoderbackground.pageab. Ab Chrome 121 wird ihre Anwesenheit in einer Manifest V3-Erweiterung ignoriert.
- unterstützt
- Firefox:
background.service_workerwird nicht unterstützt (siehe Firefox-Bug 1573659).- unterstützt
background.scripts(oderbackground.page), wennservice_workernicht spezifiziert ist oder das Service Worker-Feature deaktiviert ist. Vor Firefox 120 startete Firefox die Hintergrundseite nicht, wennservice_workervorhanden war (siehe Firefox-Bug 1860304). Ab Firefox 121 startet die Hintergrundseite wie erwartet, unabhängig vom Vorhandensein vonservice_worker.
- Safari:
- unterstützt
background.scripts(oderbackground.page) undbackground.service_worker. - wenn beide angegeben sind, verwendet Safari
background.scripts(oderbackground.page), es sei denn,preferred_environmentist aufservice_workergesetzt. - wenn
preferred_environmentaufservice_workergesetzt ist undbackground.service_workernicht spezifiziert ist, generiert Safari einen Service Worker ausbackground.scripts, falls vorhanden.
- unterstützt
Plattformübergreifende Manifest V3 Hintergrundskripte
Um Browsers mit unterschiedlichen Manifest V3 Hintergrundskriptimplementierungen zu unterstützen, spezifizieren Sie sowohl scripts als auch service_worker im background-Schlüssel. Browser, die Service Worker für Hintergrundskripte unterstützen, verwenden service_worker, während Browser, die Ereignisseiten für diesen Fall verwenden, scripts verwenden.
Sie müssen preferred_environment für dieses Fallback-Verhalten nicht einbeziehen. Verwenden Sie preferred_environment nur, wenn Sie möchten, dass Safari oder ein anderer Browser, der mehr als eine Hintergrundumgebung unterstützt, service_worker bevorzugt, wenn verfügbar.
Dieses Beispiel zeigt die relevanten Teile eines Manifests, das sowohl scripts als auch service_worker enthält:
{
"name": "Demo of service worker + event page",
"version": "1",
"manifest_version": 3,
"background": {
"scripts": ["background.js"],
"service_worker": "background.js"
}
}
Und, background.js enthält:
browser.runtime.onInstalled.addListener(() => {
browser.tabs.create({ url: "http://example.com/first-run.html" });
});
Mit dieser background-Konfiguration passiert Folgendes:
- In Chrome wird die Eigenschaft
service_workerverwendet, und ein Service Worker startet, da Chrome in einer Manifest V3-Erweiterung nur Service Worker für Hintergrundskripte unterstützt. - In Firefox wird die Eigenschaft
scriptsverwendet, und eine Ereignisseite startet, da Firefox nur Skripte für Hintergrundskripte unterstützt. - In Safari wird standardmäßig die Eigenschaft
scriptsverwendet, und eine Ereignisseite startet.
Beispiele
"background": {
"scripts": ["jquery.js", "my-background.js"]
}
Zwei Hintergrundskripte laden.
"background": {
"page": "my-background.html"
}
Eine benutzerdefinierte Hintergrundseite laden.