• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

ServiceWorker install greift nicht

Chronos

Aktives Mitglied
Hallo Forum,

ich wollte ServiceWorker (von einer Website unabhängige Threads, geht ab Chrome 40) nun mal ausprobieren um Dateien offline zu cachen.
Das sieht man hier ab Folie 27:

https://docs.google.com/presentatio...YCqyww3PBtqEP0q8/edit#slide=id.g8c7fc8faa_129

Um das ganze nutzen zu können braucht man einen (lokalen)-Webserver (browser-sync ist da recht nett), aus dem Filesystem heraus geht es nicht.

Hier mein Code:
HTML:
<!DOCTYPE html>
<html lang="de">
    <head>               
        <link rel="icon" href="./app/img/fav.png"> 
    </head>
 
    <body>
       <script src="app.js"></script>
    </body>
</html>

Code:
if ('serviceWorker' in navigator) {
    navigator.serviceWorker.register('/sw.js').then(function(registration) {
        // Registrierung des Service-Workers war erfolgreich
        console.log('Registrierung des Service-Workers war erfolgreich, scope: ', registration.scope);
    }).catch(function(err) {
        // Registrierung des Service-Workers ist fehlgeschlagen
        console.log('Registrierung des Service-Workers ist fehlgeschlagen: ', err);
    });
}

Bis zum ersten console.log geht es noch, der Serviceworker wurde als registriert.

Im sw.js selbst passiert dann schon irgendwie nichts mehr:

Code:
var shellcache = 'shell-v1';
var urlsToCache = [
    '/',
    '/app/js/jquery-2.1.3.min.js'
];

// INSTALL
self.addEventListener('install', function(event) {
    console.log('install');
    /*
    // Perform install steps
    event.waitUntil(
    caches.open(shellcache)
        .then(function(cache) {
            console.log('Opened cache');
            return cache.addAll(urlsToCache);
        })
    );
    */
});

Ein console.log('install') passiert schon gar nicht mehr - und ich kann nicht nachvollziehen wieso.

Hat jemand eine Idee?
 
Werbung:
Etwas spät aber trotzdem, mit dem Code war alles in Ordnung nur meine Art des debugens nicht.
Service Worker laufen in einem eigenen thread und sind auch so zu debuggen, nämlich nicht im Hauptfenster sondern im dazugehörigen Script, sw.js.

Nützlichen sind diese beiden Seiten:
chrome://inspect/#service-workers
chrome://serviceworker-internals/
^hier "Open DevTools window and pause JavaScript execution on Service Worker startup for debugging." auswählen und schon öfnet sich auch das gewünschte Script des Service Workers.

Aussehen tut das in etwa so:

service-worker-debug.jpg

Jetzt muss ich nur noch herausfinden, wie ich mit den Daten im Cache arbeiten kann aber das gehört hier nicht mehr rein ^^.
 
Zurück
Oben