Files
2025-11-08 16:40:00 -05:00

40 lines
1.1 KiB
HTML

<title>Proxy Sandbox Controller</title>
<script>
function wake(controller) {
window.parent.postMessage({ $sandboxsw$type: "ready" }, "*");
}
navigator.serviceWorker
.register("/sw.js", {
scope: "./",
})
.then((registration) => {
if (navigator.serviceWorker.controller) {
// there's probably already a service worker
wake(navigator.serviceWorker.controller);
} else {
// there's no service worker, wait until we're controlled
navigator.serviceWorker.addEventListener("controllerchange", () => {
wake(navigator.serviceWorker.controller);
});
}
})
.catch((error) => {
console.error("Service Worker registration failed:", error);
window.parent.postMessage(
{ $sandboxsw$type: "initerror", message: error.message },
"*"
);
});
// chrome -> controller -> service worker
window.addEventListener("message", (event) => {
if (!navigator.serviceWorker.controller) {
console.error("No service worker controller to send message to.");
return;
}
// forward messageport
navigator.serviceWorker.controller.postMessage(event.data, event.ports);
});
</script>