sw_with_navigationPreload.js (719B)
1 addEventListener("activate", event => { 2 event.waitUntil(self.registration.navigationPreload.enable()); 3 }); 4 5 async function post_to_page(data) { 6 let cs = await self.clients.matchAll(); 7 for (const client of cs) { 8 client.postMessage(data); 9 } 10 } 11 12 addEventListener("fetch", event => { 13 if (event.request.url.includes("navigationPreload_page.html")) { 14 event.respondWith( 15 new Response("<!DOCTYPE html>", { 16 headers: { "Content-Type": "text/html; charset=utf-8" }, 17 }) 18 ); 19 20 event.waitUntil( 21 (async function () { 22 let preloadResponse = await event.preloadResponse; 23 let text = await preloadResponse.text(); 24 await post_to_page(text); 25 })() 26 ); 27 } 28 });