Ich habe das Problem, dass nach der Registrierung der ServiceWorker der navigator.serviceWorker.controller immer Null ist. Ich erzwinge nie eine Aktualisierung und aktualisiere die Seite. Ich teste es mit Google Chrome 42.0.2311.152 m (32-Bit).navigator.serviceWorker.controller ist immer Null
var currentServiceWorker = null;
navigator.serviceWorker.register(SERVICE_WORKER_URL).then(function(serviceWorkerRegistration {
if (navigator.serviceWorker.controller) {
currentServiceWorker = navigator.serviceWorker.controller;
} else {
currentServiceWorker = serviceWorkerRegistration.active;
}
});
Dies Nach:
Die Controller schreibgeschützte Eigenschaft der ServiceWorkerContainer Schnittstelle liefert ein Serviceworker Objekt, wenn sein Zustand (das gleiche Objekt zurückgegeben durch ServiceWorkerRegistration.active) aktiviert wird. Diese Eigenschaft gibt null zurück, wenn es sich bei der Anforderung um eine erzwungene Aktualisierung handelt (Umschalt + Aktualisierung) oder wenn kein aktiver Worker vorhanden ist. (Quelle: https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/controller)
navigator.serviceWorker.controller
sollte das gleiche Objekt wie serviceWorkerRegistration.active
zurückzukehren. Aber mit .active
bekomme ich den aktiven Worker, mit .controller
nicht.
Haben Sie irgendwelche Ideen für diese Situation?
Danke, Andi
Dies ist eine epische Fallstricke, ich glaube, es sollte besser dokumentiert werden - zumindest einige klare Fehlermeldung wäre nett. Vielen Dank! – shabunc
@shabunc hat das Problem gelöst, ich bekomme null im Controller. –