Les service workers d'extension sont installés et mis à jour différemment des service workers Web. Cette page explique ces différences.
Enregistrer des service workers
Pour enregistrer un service worker d'extension, spécifiez-le dans le champ "background"
du fichier manifest.json
. Utilisez la clé "service_worker"
, qui spécifie un seul fichier JavaScript. Les services workers dans les pages Web ou les applications Web s'enregistrent en effectuant d'abord une détection de fonctionnalités pour serviceWorker
dans navigator
, puis en appelant register()
dans la détection de fonctionnalités. Cela ne fonctionne pas pour les extensions.
{
"name": "Awesome Test Extension",
...
"background": {
"service_worker": "service-worker.js"
},
...
}
Importer des scripts
Il existe deux méthodes pour importer des scripts dans un service worker: l'instruction import
et la méthode importScripts()
. Notez que import()
, souvent appelé "importation dynamique", n'est pas accepté.
Pour utiliser l'instruction import
, ajoutez le champ "type"
à votre fichier manifeste et spécifiez "module"
. Exemple :
"background": {
"service_worker": "service-worker.js",
"type": "module"
}
Utilisez ensuite import
comme vous le feriez d'habitude. Notez que les assertions d'importation ne sont pas prises en charge.
import { tldLocales } from './locales.js';
Utilisez importScripts()
comme vous le feriez dans un service worker.
importScripts('locales.js');
Mettre à jour
Pour mettre à jour le service worker, publiez une nouvelle version de votre extension sur le Chrome Web Store. Vous ne pouvez pas contourner ce problème en chargeant votre extension à partir d'un serveur. Pour des raisons de sécurité, Manifest V3 n'est pas compatible avec le code hébergé à distance. Votre service worker doit faire partie du package d'extension.