Principes de base des services d'extension

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.