This commit is contained in:
Til Schmitter 2026-06-21 10:39:49 +02:00
parent 3788b9b132
commit 5a33c4cd8a
3 changed files with 91 additions and 87 deletions

View file

@ -33,7 +33,8 @@ function jsldp(a, b) {
} }
loadScript('baguettebox', "J_BBX"); loadScript('baguettebox', "J_BBX");
loadScript('up2k', "J_U2K"); loadScript('up2k', "J_U2K");
loadScript('sw'); if (navigator.serviceWorker)
loadScript('sw');
// disables emojis // disables emojis

View file

@ -1,10 +1,9 @@
// service worker. required for PWAs // service worker. required for PWAs
// https://www.digitalapplied.com/blog/progressive-web-apps-2026-pwa-performance-guide // https://www.digitalapplied.com/blog/progressive-web-apps-2026-pwa-performance-guide
// Register service worker on page load // Register service worker on page load
console.log('sw.js') // modern syntax allowed here, only supported browsers load this file
if ('serviceWorker' in navigator) { console.log('sw load')
console.log('sw load') self.addEventListener("fetch", (event) => {
self.addEventListener("fetch", (event) => {
// Regular requests not related to Web Share Target. // Regular requests not related to Web Share Target.
if (event.request.method !== "POST" || !event.request.action.has("share-target")) { if (event.request.method !== "POST" || !event.request.action.has("share-target")) {
console.log('normal response') console.log('normal response')
@ -43,13 +42,12 @@ if ('serviceWorker' in navigator) {
return fetch(newRequest) return fetch(newRequest)
})(), })(),
); );
}); });
self.addEventListener('install', (event) => { self.addEventListener('install', (event) => {
console.log('sw wait skip') console.log('sw wait skip')
self.skipWaiting(); // insta replace old service workers (helpful for dev) self.skipWaiting(); // insta replace old service workers (helpful for dev)
}); });
const addResourcesToCache = async (resources) => { const addResourcesToCache = async (resources) => {
const cache = await caches.open("files"); const cache = await caches.open("files");
await cache.addAll(resources); await cache.addAll(resources);
}; };
}

View file

@ -2362,7 +2362,10 @@ function setColor (color) {
pbar.drawpos(); pbar.drawpos();
vbar.draw(); vbar.draw();
} }
var accent = sread('accent');
var accent = "";
if(sread != undefined)
accent = sread('accent');
var tcolor = QS('meta[name=theme-color]'); var tcolor = QS('meta[name=theme-color]');
if(tcolor) if(tcolor)
tcolor = tcolor.content; tcolor = tcolor.content;
@ -2448,13 +2451,14 @@ function xhrchk(xhr, prefix, e404, lvl, tag) {
return fun(0, prefix + xhr.status + ": " + errtxt, tag); return fun(0, prefix + xhr.status + ": " + errtxt, tag);
} }
// register service worker if (navigator.serviceWorker){
// ToDo: set http header: Service-Worker-Allowed: / // register service worker
// otherwise it will fail to register // ToDo: set http header: Service-Worker-Allowed: /
// https://stackoverflow.com/questions/49084718/how-exactly-add-service-worker-allowed-to-register-service-worker-scope-in-upp // otherwise it will fail to register
window.addEventListener('load', async () => { // https://stackoverflow.com/questions/49084718/how-exactly-add-service-worker-allowed-to-register-service-worker-scope-in-upp
window.addEventListener('load', function() {
try { try {
const registration = await navigator.serviceWorker.register("/.cpr/w/sw.js", { var registration = navigator.serviceWorker.register("/.cpr/w/sw.js", {
scope: "/", scope: "/",
}); });
if (registration.installing) { if (registration.installing) {
@ -2465,26 +2469,27 @@ window.addEventListener('load', async () => {
console.log("Service worker active"); console.log("Service worker active");
} }
} catch (error) { } catch (error) {
console.error(`Registration failed with ${error}`); console.error("Registration failed with " + error);
} }
}); });
if(ebi('inst')){ if(ebi('inst')){
var installPrompt = null; var installPrompt = null;
window.addEventListener("beforeinstallprompt", function(e) { window.addEventListener("beforeinstallprompt", function(e) {
e.preventDefault(); e.preventDefault();
installPrompt = e; installPrompt = e;
ebi('inst').removeAttribute("hidden"); ebi('inst').removeAttribute("hidden");
}); });
ebi('inst').onclick = async function(){ ebi('inst').onclick = function(){
if (!installPrompt) { if (!installPrompt) {
return; return;
} }
const result = await installPrompt.prompt(); var result = installPrompt.prompt();
console.log(`Install prompt was: ${result.outcome}`); console.log("Install prompt was: " + result.outcome);
installPrompt = null; installPrompt = null;
ebi('inst').setAttribute("hidden", ""); ebi('inst').setAttribute("hidden", "");
} }
}
} }
J_UTL = 2; J_UTL = 2;