2015-04-26 17 views
25

ho registrato un operaio di servizio con successo, ma poi il codicenavigator.serviceWorker non è mai pronto

navigator.serviceWorker.ready.then(function(serviceWorkerRegistration) { 
    // Do we already have a push message subscription? 
    .... 

blocca - la funzione non viene mai chiamato. Perché?

risposta

49

Il problema era che il file service-worker.js è stato memorizzato in una sottodirectory assets.

Non eseguire questa operazione: archiviare service-worker.js nel numero root of your app (o successivo). In questo modo la tua app può accedere al lavoratore del servizio.

Vedi HTML5Rocks article -

Una sottigliezza con il metodo registro è la posizione del file operaio di servizio. In questo caso noterete che il file worker del servizio si trova alla radice del dominio. Ciò significa che l'ambito del lavoratore del servizio sarà l'intera origine. In altre parole, questo addetto al servizio riceverà eventi di recupero per tutto ciò che riguarda questo dominio. Se registriamo il file worker del servizio su /example/sw.js, l'addetto all'assistenza vedrebbe solo gli eventi di recupero per le pagine il cui URL inizia con/example/(ad es./Example/page1 /,/example/page2 /).

Aggiunto

Un nuovo problema è che il ServiceWorker non è mai pronta se la pagina è hard-ricaricato. Le ricariche successive della pagina morbida funzionano correttamente. Il codice di esempio di Google non funziona. See the Chrome bug report.

La correzione di bug è stato incluso con Chrome 44.

+0

Sto affrontando lo stesso problema. Il mio addetto all'assistenza è registrato su https://test.example.com/background-worker.js e il mio codice Javascript navigator.serviceWorker.ready.then (function (serviceWorkerRegistration) è in esecuzione su https://test.example.com/ blog/ Si sta registrando con successo ma questa funzione non viene mai chiamata Qualche idea su quale potrebbe essere il problema –

+1

Vedere le informazioni appena aggiunte nella risposta –

+0

Questa risposta mi aiuta davvero con il mio stesso problema. – AnkitJ

Problemi correlati