fetch.js (900B)
1 function get_query_params(url) { 2 var search = new URL(url).search; 3 if (!search) { 4 return {}; 5 } 6 var ret = {}; 7 var params = search.substring(1).split("&"); 8 params.forEach(function (param) { 9 var element = param.split("="); 10 ret[decodeURIComponent(element[0])] = decodeURIComponent(element[1]); 11 }); 12 return ret; 13 } 14 15 addEventListener("fetch", function (event) { 16 if (event.request.url.includes("fail.html")) { 17 event.respondWith(fetch("hello.html", { integrity: "abc" })); 18 } else if (event.request.url.includes("fake.html")) { 19 event.respondWith(fetch("hello.html")); 20 } else if (event.request.url.includes("redirect")) { 21 let param = get_query_params(event.request.url); 22 let url = param.url; 23 let mode = param.mode; 24 25 event.respondWith(fetch(url, { mode })); 26 } 27 }); 28 29 addEventListener("activate", function (event) { 30 event.waitUntil(clients.claim()); 31 });