service-worker.js (1015B)
1 const requests = new Set(); 2 3 addEventListener('install', evt => { 4 evt.waitUntil(self.skipWaiting()); 5 }); 6 7 addEventListener('activate', evt => { 8 evt.waitUntil(self.clients.claim()); 9 }); 10 11 addEventListener('message', evt => { 12 evt.source.postMessage(requests); 13 }); 14 15 addEventListener('fetch', evt => { 16 const url = new URL(evt.request.url); 17 const path = url.pathname; 18 const search = url.search || "?"; 19 const params = new URLSearchParams(search); 20 const type = params.get('type'); 21 if (path.includes('404')) { 22 const dir = path.split('/'); 23 const request = dir[dir.length-1] + search; 24 if (!requests.has(request)) { 25 requests.add(request); 26 } 27 evt.respondWith(new Response("", { 28 headers: { 29 "Content-Type": type || "text/plain" 30 } 31 })); 32 } else if (path.endsWith('resources.html')) { 33 const html = params.get('html') || ""; 34 evt.respondWith(new Response(html, { 35 headers: { 36 "Content-Type": type || "text/html" 37 } 38 })); 39 } 40 return; 41 });