2017-07-10 1 views
3

J'ai ajouté un technicien de maintenance sur ma page avec le code ci-dessous. Cela fonctionne bien une fois que la page a été rechargée et que le worker est déjà installé. Mais ne semble pas attraper les événements d'extraction avant que la page soit rechargée après avoir vu le journal 'SW INSTALL'.Travailleur de service: l'écouteur d'événement de récupération fonctionne uniquement après le rechargement de la page

app.js

navigator.serviceWorker.register('/worker.js').then((registration) => 
{ 
    console.log('ServiceWorker registration successful with scope: ', 
registration.scope); 
}, (err) => 
{ 
    console.log('ServiceWorker registration failed: ', err); 
}); 

worker.js

self.addEventListener('install', function (event) 
{ 
    console.log("SW INSTALL"); 
}); 

self.addEventListener('fetch', function (event) 
{ 
    console.log("FETCHING", event); 
    event.respondWith(
      caches.match(event.request) 
        .then(function (response, err) 
          { 
           // Cache hit - return response 
           if (response) 
           { 
            console.log("FOUND", response, err); 
            return response; 
           } 
           console.log("MISSED", event.request.mode); 
           return fetch(event.request) 
          } 
        ) 
    ); 
}); 

Répondre

5

Solution: Ajouter ce qui suit à worker.js;

self.addEventListener('activate', function (event) 
{ 
    event.waitUntil(self.clients.claim()); 
});