var cacheName = "v3";
var cacheFiles = [
"./",
"./index.html",
"./css/reset.css",
"./css/style.css",
"https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,700,400italic,700italic",
"./js/app.js",
]
self.addEventListener('install', function (e) {
console.log("[ServiceWorker] Installed");
e.waitUntil(
caches.open(cacheName).then(function (cache) {
console.log("[ServiceWorker] Caching cacheFiles");
return cache.addAll(cacheFiles);
})
)
});
self.addEventListener('activate', function (e) {
console.log("[ServiceWorker] Activated");
e.waitUntil(
caches.keys().then(function (cacheNames) {
return Promise.all(cacheNames.map(thisCacheName => {
if (thisCacheName !== cacheName) {
console.log("[Service Worker] Removing Cached Files from ", thisCacheName);
return caches.delete(thisCacheName);
}
}))
})
);
});
self.addEventListener('fetch', function (e) {
console.log("[ServiceWorker] Fetching", e.request.url);
e.respondWith(
caches.match(e.request).then(function (response) {
//if cache exists for this request
if (response) {
console.log("[ServiceWorker] Found in cache", e.request.url);
return response;
}
var requestClone = e.request.clone();
fetch(e.request)
.then(function(response){
if (!response){
console.log("[ServiceWorker] No response from fetch");
return response;
}
var responseClone = response.clone();
return caches.open(cacheName).then(function(cache){
cache.put(e.request, responseClone);
return response;
})
})
.catch(function(err){
console.log("[ServiceWorker] Error fetching & Caching");
})
})
)
})
if ('serviceWorker' in navigator){
navigator.serviceWorker
.register("service-worker.js",{scope:'./'})
.then(function(registration){
console.log("Service Worker Registered");
})
.catch(function(err){
console.log("Service Worker Failed to Register",err);
})
}
var get = function(url){
return new Promise(function(resolve, reject){
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
if (xhr.readyState === XMLHttpRequest.DONE){
if (xhr.status === 200) {
var result = xhr.responseText;
result = JSON.parse(result);
resolve(result);
} else {
reject(xhr);
}
}
}
xhr.open("GET", url, true);
xhr.send();
});
}
get("https://api.github.com/users/ab")
.then(function(response){
console.log("Success", response);
document.getElementsByClassName('targetImage')[0].src = response.avatar_url;
})
.catch(function(err){
console.log("Error", err);
})
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Service Worker</title>
</head>
<body>
<h1 id="fader" class="fadeable">Hello Service Workers!</h1>
<script type="text/javascript" src="app.js"></script>
</body>
</html>