service worker first test
This commit is contained in:
		
							
								
								
									
										101
									
								
								html/cache-polyfill.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										101
									
								
								html/cache-polyfill.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,101 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *  Air Horner
 | 
				
			||||||
 | 
					 *  Copyright 2015 Google Inc. All rights reserved.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *  Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					 *  you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					 *  You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *      https://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *  Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 *  distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					 *  See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					 *  limitations under the License
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					if (!Cache.prototype.add) {
 | 
				
			||||||
 | 
					  Cache.prototype.add = function add(request) {
 | 
				
			||||||
 | 
					    return this.addAll([request]);
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (!Cache.prototype.addAll) {
 | 
				
			||||||
 | 
					  Cache.prototype.addAll = function addAll(requests) {
 | 
				
			||||||
 | 
					    var cache = this;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Since DOMExceptions are not constructable:
 | 
				
			||||||
 | 
					    function NetworkError(message) {
 | 
				
			||||||
 | 
					      this.name = 'NetworkError';
 | 
				
			||||||
 | 
					      this.code = 19;
 | 
				
			||||||
 | 
					      this.message = message;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    NetworkError.prototype = Object.create(Error.prototype);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return Promise.resolve().then(function() {
 | 
				
			||||||
 | 
					      if (arguments.length < 1) throw new TypeError();
 | 
				
			||||||
 | 
					      
 | 
				
			||||||
 | 
					      // Simulate sequence<(Request or USVString)> binding:
 | 
				
			||||||
 | 
					      var sequence = [];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      requests = requests.map(function(request) {
 | 
				
			||||||
 | 
					        if (request instanceof Request) {
 | 
				
			||||||
 | 
					          return request;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else {
 | 
				
			||||||
 | 
					          return String(request); // may throw TypeError
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      return Promise.all(
 | 
				
			||||||
 | 
					        requests.map(function(request) {
 | 
				
			||||||
 | 
					          if (typeof request === 'string') {
 | 
				
			||||||
 | 
					            request = new Request(request);
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          var scheme = new URL(request.url).protocol;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          if (scheme !== 'http:' && scheme !== 'https:') {
 | 
				
			||||||
 | 
					            throw new NetworkError("Invalid scheme");
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          return fetch(request.clone());
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
 | 
					    }).then(function(responses) {
 | 
				
			||||||
 | 
					      // TODO: check that requests don't overwrite one another
 | 
				
			||||||
 | 
					      // (don't think this is possible to polyfill due to opaque responses)
 | 
				
			||||||
 | 
					      return Promise.all(
 | 
				
			||||||
 | 
					        responses.map(function(response, i) {
 | 
				
			||||||
 | 
					          return cache.put(requests[i], response);
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
 | 
					    }).then(function() {
 | 
				
			||||||
 | 
					      return undefined;
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (!CacheStorage.prototype.match) {
 | 
				
			||||||
 | 
					  // This is probably vulnerable to race conditions (removing caches etc)
 | 
				
			||||||
 | 
					  CacheStorage.prototype.match = function match(request, opts) {
 | 
				
			||||||
 | 
					    var caches = this;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return this.keys().then(function(cacheNames) {
 | 
				
			||||||
 | 
					      var match;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      return cacheNames.reduce(function(chain, cacheName) {
 | 
				
			||||||
 | 
					        return chain.then(function() {
 | 
				
			||||||
 | 
					          return match || caches.open(cacheName).then(function(cache) {
 | 
				
			||||||
 | 
					            return cache.match(request, opts);
 | 
				
			||||||
 | 
					          }).then(function(response) {
 | 
				
			||||||
 | 
					            match = response;
 | 
				
			||||||
 | 
					            return match;
 | 
				
			||||||
 | 
					          });
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					      }, Promise.resolve());
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -138,5 +138,12 @@ När jag började informera mig om Universiteter, antagningspoäng och meritvär
 | 
				
			|||||||
<script src="https://storage.googleapis.com/code.getmdl.io/1.0.1/material.min.js"></script>
 | 
					<script src="https://storage.googleapis.com/code.getmdl.io/1.0.1/material.min.js"></script>
 | 
				
			||||||
<script src="assets/js/loader.min.js"></script>
 | 
					<script src="assets/js/loader.min.js"></script>
 | 
				
			||||||
<script src="assets/js/softscrollscript.js"></script>
 | 
					<script src="assets/js/softscrollscript.js"></script>
 | 
				
			||||||
 | 
					<script>
 | 
				
			||||||
 | 
					if('serviceWorker' in navigator) {
 | 
				
			||||||
 | 
					  navigator.serviceWorker
 | 
				
			||||||
 | 
					           .register('/sw.js')
 | 
				
			||||||
 | 
					           .then(function() { console.log("Service Worker Registered"); });
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
</body>
 | 
					</body>
 | 
				
			||||||
</html>
 | 
					</html>
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										35
									
								
								html/sw.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								html/sw.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,35 @@
 | 
				
			|||||||
 | 
					importScripts('/cache-polyfill.js');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					self.addEventListener('install', function(e) {
 | 
				
			||||||
 | 
					 e.waitUntil(
 | 
				
			||||||
 | 
					   caches.open('meritkollen').then(function(cache) {
 | 
				
			||||||
 | 
					     return cache.addAll([
 | 
				
			||||||
 | 
					       '/',
 | 
				
			||||||
 | 
					       '/index.html',
 | 
				
			||||||
 | 
					       '/Ekonomi.php',
 | 
				
			||||||
 | 
					       '/Estet.php',
 | 
				
			||||||
 | 
					       '/Natur.php',
 | 
				
			||||||
 | 
					       '/Samhäll.php',
 | 
				
			||||||
 | 
					       '/Teknik.php',
 | 
				
			||||||
 | 
					       '/assets/css/main.min.css',
 | 
				
			||||||
 | 
					       '/assets/img/background.jpg',
 | 
				
			||||||
 | 
					       '/assets/js/calcscript.js',
 | 
				
			||||||
 | 
					       '/assets/js/changeall.js',
 | 
				
			||||||
 | 
					       '/assets/js/loader.js',
 | 
				
			||||||
 | 
					       '/assets/js/loader.min.js',
 | 
				
			||||||
 | 
					       '/assets/js/softscrollscript.js',
 | 
				
			||||||
 | 
					       '/assets/js/sparabetyg.js',
 | 
				
			||||||
 | 
					     ]);
 | 
				
			||||||
 | 
					   })
 | 
				
			||||||
 | 
					 );
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					self.addEventListener('fetch', function(event) {
 | 
				
			||||||
 | 
						console.log(event.request.url);
 | 
				
			||||||
 | 
						event.respondWith(
 | 
				
			||||||
 | 
						caches.match(event.request).then(function(response) {
 | 
				
			||||||
 | 
							return response || fetch(event.request);
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
						);
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
		Reference in New Issue
	
	Block a user