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="assets/js/loader.min.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>
 | 
			
		||||
</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