Ho il problema che dopo aver registrato il serviceWorker il navigator.serviceWorker.controller è sempre nullo. Non faccio mai una ricarica forzata e aggiorno semplicemente la pagina. Lo collaudo con Google Chrome 42.0.2311.152 m (32 bit).navigator.serviceWorker.controller è sempre nullo
var currentServiceWorker = null;
navigator.serviceWorker.register(SERVICE_WORKER_URL).then(function(serviceWorkerRegistration {
if (navigator.serviceWorker.controller) {
currentServiceWorker = navigator.serviceWorker.controller;
} else {
currentServiceWorker = serviceWorkerRegistration.active;
}
});
Secondo questo:
Il controllore proprietà di sola lettura dell'interfaccia ServiceWorkerContainer restituisce un oggetto ServiceWorker se il suo stato è attivato (lo stesso oggetto restituito da ServiceWorkerRegistration.active). Questa proprietà restituisce null se la richiesta è un aggiornamento forzato (Maiusc + Aggiorna) o se non è presente un lavoratore attivo. (Fonte: https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/controller)
navigator.serviceWorker.controller
dovrebbe restituire lo stesso oggetto come serviceWorkerRegistration.active
. Ma con .active
ottengo il lavoratore attivo, con .controller
no.
Avete qualche idea per quella situazione?
Grazie, Andi
questo è un errore epico, credo che dovrebbe essere meglio documentato - almeno un messaggio di errore chiaro sarebbe bello. Grazie! – shabunc
@shabunc ha risolto il problema, ottengo null nel controller. –