Skip to content

Instantly share code, notes, and snippets.

@mizchi
Created April 16, 2025 11:02
Show Gist options
  • Save mizchi/23a46a1fd5b1482acba2033ef7c666e5 to your computer and use it in GitHub Desktop.
Save mizchi/23a46a1fd5b1482acba2033ef7c666e5 to your computer and use it in GitHub Desktop.
force js insert
addEventListener("install", (event) => {
event.waitUntil(skipWaiting());
console.log("Service worker install");
});
addEventListener("activate", (event) => {
event.waitUntil(self.clients.claim());
console.log("Service worker activate");
});
addEventListener("fetch", (event) => {
console.info("[fetch]", event.request.url);
});
{
"assets": { "directory": "./public", "binding": "assets", "run_worker_first": true }
}
const isNavigate = (request: Request) => {
return request.headers.get("accept")?.includes("text/html") ?? false;
};
function transformNavigationResponse(response: Response): Response {
return new HTMLRewriter()
.on("head", {
element(element) {
element.append(`<script>navigator.serviceWorker.register('/__sw__.js')</script>`, {
html: true,
});
},
})
.transform(response);
}
export default {
async fetch(request, env, ctx): Promise<Response> {
if (isNavigate(request)) {
const res = await env.assets.fetch(request);
return transformNavigationResponse(res);
}
return env.assets.fetch(request);
},
} satisfies ExportedHandler<Env>;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment