Registrera service worker från HTML
Registrera en service worker med en script-tagg och navigator-API:t
Registrera service worker från HTML är en gratis lektion i HTML Academy på CoddyKit. Detta är lektion 2 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för HTML Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i HTML Academy innehåller totalt 4 lektioner.
Vad en service worker är
En service worker är en JavaScript-fil som körs i bakgrunden, separat från alla sidor, och fångar upp nätverksförfrågningar inom sitt scope. Den möjliggör offline-stöd, pushnotiser, bakgrundssynkronisering och snabbare upprepade laddningar genom cachelagring.
Registrering
Registrera workern från ett sid-skript: navigator.serviceWorker.register("/sw.js"). Webbläsaren hämtar /sw.js, tolkar filen, kör dess install-händelse och börjar fånga upp förfrågningar inom registreringens scope.
if ("serviceWorker" in navigator) {
navigator.serviceWorker.register("/sw.js")
.then((reg) => console.log("Registered, scope:", reg.scope))
.catch((err) => console.error("Registration failed:", err));
}Funktionsdetektera först
Äldre webbläsare stöder inte service workers. Kontrollera alltid funktionaliteten med "serviceWorker" in navigator innan du anropar register; annars kastas ett fel i webbläsare som saknar API:et. Det går inte att använda en polyfill – service workers kan inte polyfillas eftersom de kräver integration på webbläsarnivå.
Scope
Scope är det sökvägsprefix som workern styr. Som standard är scope samma som katalogen där worker-filen finns: /sw.js styr alla URL:er under /. Om du vill registrera en worker med ett djupare scope från en annan filplats måste du ange scope-alternativet OCH skicka headern Service-Worker-Allowed.
Var sw.js ska placeras
Placera sw.js i programmets rot (/sw.js) så att dess standardscope omfattar hela webbplatsen. Djupare sökvägar (/app/sw.js) begränsar scopet till /app/ och dess undersökvägar, vilket sällan är vad du vill.
Registreringstidpunkt
Registrera workern efter att sidan har lästs in för att undvika att konkurrera om bandbredd under den kritiska renderingen: window.addEventListener("load", () => navigator.serviceWorker.register("/sw.js")). PWA-funktionerna aktiveras vid senare besök utan att fördröja det första besöket.
Uppdateringar
Webbläsaren kontrollerar automatiskt om sw.js har uppdaterats, vanligtvis var 24:e timme och vid de flesta sidladdningar. Om filens innehåll har ändrats hämtas och installeras den nya workern, som väntar i tillståndet "waiting" tills alla befintliga flikar stängs – därefter aktiveras den.
Tvinga fram uppdateringar
registration.update() utlöser manuellt en uppdateringskontroll. self.skipWaiting() inuti den nya sw.js aktiverar den omedelbart utan att vänta på att flikarna ska stängas. Kombinera dem för beteendet "kör alltid den senaste workern", men tänk på att detta kan orsaka nya hämtningar mitt i en session.
Avregistrera
registration.unregister() tar bort workern. Det är användbart under utveckling om en felaktig worker stör webbplatsen. I Chrome DevTools erbjuder Application → Service Workers en knapp med texten "Unregister" för samma ändamål vid felsökning.
Vanligt misstag
Om du registrerar en worker över HTTP, utan HTTPS, misslyckas det tyst – service workers kräver ett säkert ursprung (HTTPS eller localhost under utveckling). Kontrollera konsolen efter meddelandet "An SSL certificate error occurred" om registreringen inte börjar fungera.
Samordna workern och sidan
Workern har ingen åtkomst till DOM. Om du vill skicka meddelanden använder du navigator.serviceWorker.controller.postMessage() från sidan och self.addEventListener("message", handler) i workern, och tvärtom. Det är användbart för ogiltigförklaring av cache, versionskontroller och anpassade händelser.
Första besöket jämfört med återkommande besök
Vid det första besöket installeras workern, men den börjar styra sidor först efter att sidan har laddats om. Om du vill att den ska styra den första navigeringen direkt anropar du self.clients.claim() i activate-händelsen – användbart för offline-first-appar.
Kunskapskontroll
Varför måste service workers levereras via HTTPS eller localhost?
Sammanfattning
Registrera service workers från sidans JavaScript med navigator.serviceWorker.register("/sw.js") efter att du har kontrollerat funktionaliteten. Placera sw.js i programmets rot för att få ett fullständigt scope. Registrera den vid sidans load för att undvika konkurrens med den kritiska renderingen. Uppdateringar kontrolleras automatiskt med jämna mellanrum; tvinga fram en uppdatering med registration.update eller skipWaiting. HTTPS krävs för att förhindra att en skadlig worker injiceras.
Lär dig HTML med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 40
- Lektioner
- 159
Vanliga frågor
Är lektionen ”Registrera service worker från HTML” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen HTML Academy, inklusive ”Registrera service worker från HTML”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i HTML Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Registrera service worker från HTML”?
Registrera en service worker med en script-tagg och navigator-API:t Ni övar på HTML Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig HTML Academy?
Du behöver inga förkunskaper. Utbildningen i HTML Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”Registrera service worker från HTML”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här HTML Academy-lektionen?
Ja. Varje HTML Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Web App Manifest
- Registrera service worker från HTML
- Temafärg och appikoner
- Reservsida för offline-läge