Principes de base des services d'extension

Les services d'extension sont installés et mis à jour différemment des service workers Web. Cette page explique ces différences.

Enregistrer les service workers

Pour enregistrer un service worker d'extension, indiquez-le dans le champ "background" du fichier manifest.json. Utilisez la clé "service_worker", qui spécifie un seul fichier JavaScript. Les service workers s'enregistrent sur des pages Web ou des applications Web en détectant d'abord les 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 compatible.

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 normalement. Notez que les assertions d'importation ne sont pas acceptées.

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.