Enregistrer un service worker depuis le HTML
Enregistrez un service worker avec une balise de script et l’API de navigation.
Enregistrer un service worker depuis le HTML est une leçon HTML Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage HTML Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours HTML Academy comprend 4 leçons au total.
Qu’est-ce qu’un agent de service
Un agent de service est un fichier JavaScript qui s’exécute en arrière-plan, séparément de toute page, et intercepte les requêtes réseau dans son périmètre. Il permet la prise en charge hors ligne, les notifications push, la synchronisation en arrière-plan et des chargements répétés plus rapides grâce à la mise en cache.
Enregistrement
Enregistrez l’agent depuis un script de page : navigator.serviceWorker.register("/sw.js"). Le navigateur récupère /sw.js, l’analyse, exécute son événement d’installation et commence à intercepter les requêtes dans le périmètre de l’enregistrement.
if ("serviceWorker" in navigator) {
navigator.serviceWorker.register("/sw.js")
.then((reg) => console.log("Registered, scope:", reg.scope))
.catch((err) => console.error("Registration failed:", err));
}Détecter d’abord la fonctionnalité
Les anciens navigateurs ne prennent pas en charge les agents de service. Détectez toujours la fonctionnalité avec "serviceWorker" in navigator avant d’appeler register : sinon l’appel lève une exception dans les navigateurs qui ne disposent pas de l’API. Ajouter un polyfill n’est pas viable : les agents de service ne peuvent pas être simulés de cette manière, car ils nécessitent une intégration au niveau du navigateur.
Périmètre
Le périmètre est le préfixe de chemin contrôlé par l’agent. Par défaut, il correspond au répertoire du fichier de l’agent : /sw.js contrôle toutes les URL sous /. Pour enregistrer un agent dont le périmètre est plus profond depuis un autre emplacement de fichier, définissez l’option de périmètre AND servez l’en-tête Service-Worker-Allowed.
Où placer sw.js
Placez sw.js à la racine de l’application (/sw.js) afin que son périmètre par défaut couvre tout le site. Les chemins plus profonds, comme /app/sw.js, limitent le périmètre à /app/ et à ses sous-chemins, ce qui est rarement souhaitable.
Moment de l’enregistrement
Enregistrez l’agent après le chargement de la page pour éviter qu’il ne concurrence la bande passante pendant le rendu critique : window.addEventListener("load", () => navigator.serviceWorker.register("/sw.js")). Les fonctionnalités de la PWA deviennent actives lors des visites suivantes sans retarder la première visite.
Mises à jour
Le navigateur recherche automatiquement une version mise à jour de sw.js, généralement toutes les 24 heures et lors de la plupart des chargements de page. Si le contenu du fichier a changé, le nouvel agent est téléchargé et installé, puis attend dans l’état « waiting » jusqu’à la fermeture de tous les onglets existants ; il s’active ensuite.
Forcer les mises à jour
registration.update() déclenche manuellement une vérification des mises à jour. self.skipWaiting() dans le nouveau sw.js l’active immédiatement, sans attendre la fermeture des onglets. Combinez-les pour obtenir un comportement où la dernière version de l’agent est toujours utilisée, au prix de nouveaux téléchargements en cours de session.
Désenregistrement
registration.unregister() supprime l’agent. Cette opération est utile pendant le développement si un agent défectueux perturbe votre site. Dans Chrome DevTools, Application → Service Workers propose un bouton « Unregister » ayant le même objectif pendant le débogage.
Erreur courante
Enregistrer un agent via HTTP, sans HTTPS, échoue silencieusement : les agents de service nécessitent une origine sécurisée, c’est-à-dire HTTPS ou localhost pour le développement. Consultez la console pour vérifier le message « Une erreur de certificat SSL s’est produite » si l’enregistrement ne prend pas effet.
Coordonner l’agent de service et la page
L’agent n’a pas accès au DOM. Pour échanger des messages, utilisez navigator.serviceWorker.controller.postMessage() depuis la page et self.addEventListener("message", handler) dans l’agent, et inversement. Cette méthode est utile pour invalider le cache, vérifier les versions et gérer des événements personnalisés.
Première visite ou visite répétée
Lors de la première visite, l’agent s’installe et ne commence à contrôler les pages qu’après le rechargement de la page. Pour contrôler immédiatement la première navigation, appelez self.clients.claim() dans l’événement d’activation : cette méthode est utile pour les applications conçues d’abord pour le mode hors ligne.
Vérification des connaissances
Pourquoi les agents de service doivent-ils être diffusés via HTTPS, ou depuis localhost ?
Résumé
Enregistrez les agents de service depuis le JS de la page avec navigator.serviceWorker.register("/sw.js") après avoir détecté la fonctionnalité. Placez sw.js à la racine de l’application pour couvrir tout le périmètre. Effectuez l’enregistrement au chargement afin d’éviter de concurrencer le rendu critique. Les mises à jour sont vérifiées automatiquement à intervalles réguliers ; forcez-les avec registration.update ou skipWaiting. HTTPS est requis pour empêcher l’injection d’un agent malveillant.
Apprends HTML avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 40
- Leçons
- 159
Questions Fréquemment Posées
La leçon « Enregistrer un service worker depuis le HTML » est-elle gratuite ?
Oui — le texte complet de « Enregistrer un service worker depuis le HTML » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours HTML Academy, passe à CoddyKit PRO. Le cours HTML Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Enregistrer un service worker depuis le HTML » ?
Enregistrez un service worker avec une balise de script et l’API de navigation. Tu pratiques HTML Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer HTML Academy ?
Aucune expérience préalable n'est requise. HTML Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Enregistrer un service worker depuis le HTML » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon HTML Academy ?
Oui. Chaque leçon HTML Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Le manifeste d’application Web
- Enregistrer un service worker depuis le HTML
- Couleur du thème et icônes de l’application
- Page de repli hors connexion