Files
LoadWebsiteFromZip/zipfs-sw-worker.html
Alcea 2422d31874 Add files via upload
Update to render fullscreen
2026-08-02 04:24:10 +02:00

94 lines
3.3 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>ZIP-FS Demo</title>
<!-- quick monospace “terminal” look -->
<style>
html, body { margin:0; padding:0; height:100%; overflow:hidden;
font-family: monospace; background:#222; color:#eee; }
iframe{ position:fixed; inset:0; width:100vw; height:100vh;
border:0; background:#fff; color:#000; z-index:1; }
/* Small collapsible log overlay, out of the way of the iframe */
#log-wrap{ position:fixed; top:0; left:0; z-index:2;
max-width:40vw; max-height:35vh;
font-size:12px; }
#log-toggle{ display:block; background:#111; color:#6cf;
border:1px solid #555; padding:.25rem .5rem;
cursor:pointer; user-select:none; }
#log{ white-space:pre-wrap; overflow-y:auto; max-height:30vh;
margin:0; border:1px solid #555; border-top:none;
padding:.5rem; background:#111; }
#log-wrap.collapsed #log{ display:none; }
a.link-root{ position:fixed; top:0; right:0; z-index:2;
background:#111; color:#6cf; text-decoration:underline;
padding:.25rem .5rem; cursor:pointer; }
</style>
</head>
<body>
<!-- Handy link so you can click instead of retyping /root -->
<a href="/root" target="zipfs-iframe" class="link-root">Open Root (/root)</a>
<div id="log-wrap" class="collapsed">
<span id="log-toggle">▶ ZIP-FS Logs</span>
<pre id="log">Loading logs…\n</pre>
</div>
<!-- Well set the src from JS after the SW is in control -->
<iframe id="zipfs-iframe" title="ZIPFS root" name="zipfs-iframe"></iframe>
<!-- Page logic: registers SW, logs messages, sets iframe src -->
<script>
const logEl = document.getElementById('log');
const iframe = document.getElementById('zipfs-iframe');
const logWrap = document.getElementById('log-wrap');
const logToggle = document.getElementById('log-toggle');
logToggle.addEventListener('click', () => {
logWrap.classList.toggle('collapsed');
logToggle.textContent = (logWrap.classList.contains('collapsed') ? '▶' : '▼') + ' ZIP-FS Logs';
});
function log(...a) {
const msg = '[ZIPFS] ' + a.join(' ');
console.log(msg);
logEl.textContent += msg + '\n';
logEl.scrollTop = logEl.scrollHeight;
}
function loadIframe() {
log('Setting iframe src to /root');
iframe.src = '/root';
}
if ('serviceWorker' in navigator) {
log('Registering Service Worker…');
navigator.serviceWorker.register('/zipfs-sw.js').then(reg => {
log('Service Worker registered:', reg);
if (!navigator.serviceWorker.controller) {
log('SW not controlling page yet — reloading in 500 ms…');
setTimeout(() => location.reload(), 500);
} else {
loadIframe();
}
navigator.serviceWorker.oncontrollerchange = () => {
log('Controller changed — reloading page…');
location.reload();
};
}).catch(err => log('SW registration failed:', err));
navigator.serviceWorker.addEventListener('message', e => {
if (e.data?.type === 'SW_LOG') log(e.data.text);
});
} else {
log('Service Workers not supported in this browser.');
}
</script>
</body>
</html>