iframe_with_service_worker.html (912B)
1 <!DOCTYPE html> 2 <meta charset="utf-8"> 3 4 Iframe loading a stylesheet via a service worker 5 <script> 6 "use strict"; 7 8 function waitForActive(swr) { 9 const sw = swr.installing || swr.waiting || swr.active; 10 return new Promise(resolve => { 11 if (sw.state === "activated") { 12 resolve(swr); 13 return; 14 } 15 sw.addEventListener("statechange", function onStateChange() { 16 if (sw.state === "activated") { 17 sw.removeEventListener("statechange", onStateChange); 18 resolve(swr); 19 } 20 }); 21 }); 22 } 23 24 navigator.serviceWorker.register("iframe_service_worker.js", {scope: "."}) 25 .then(registration => waitForActive(registration)) 26 .then(() => { 27 const link = document.createElement("link"); 28 link.setAttribute("rel", "stylesheet"); 29 link.setAttribute("type", "text/css"); 30 link.setAttribute("href", "sheet.css"); 31 document.documentElement.appendChild(link); 32 }); 33 </script>