intercepted-referrer-sw.js (1124B)
1 self.addEventListener('install', event => { 2 // Activate immediately to simplify the test. 3 event.waitUntil(self.skipWaiting()); 4 }); 5 6 self.addEventListener('activate', event => { 7 // Make sure the very next navigation is controlled by this SW. 8 event.waitUntil(self.clients.claim()); 9 }); 10 11 self.addEventListener('fetch', event => { 12 // Only handle top-level navigations within our scope. 13 if (event.request.mode === 'navigate') { 14 const html = `<!doctype html> 15 <meta charset="utf-8"> 16 <title>SW Intercepted Page</title> 17 <script> 18 // Post the referrer observed by this new Document. 19 window.addEventListener('load', () => { 20 parent.postMessage({ 21 source: 'sw-intercepted', 22 referrer: document.referrer, 23 url: location.href 24 }, '*'); 25 }); 26 </script> 27 <h1>SW-synthesized page</h1> 28 <p>This page was served by a Service Worker via respondWith().</p>`; 29 30 event.respondWith(new Response(html, { 31 headers: { 'Content-Type': 'text/html; charset=utf-8' } 32 })); 33 } 34 // Otherwise, fall through to network. 35 });