Подтвердить что ты не робот

Navigator.serviceWorker никогда не был готов

Я успешно зарегистрировал сервисного работника, но затем код

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

зависает - функция никогда не вызывается. Почему?

4b9b3361

Ответ 1

Проблема заключалась в том, что файл service-worker.js был сохранен в подкаталоге assets.

Не делайте этого: сохраните service-worker.js в root of your app (или выше). Таким образом ваше приложение может получить доступ к сервис-работнику.

Смотрите статью HTML5Rocks -

Одна тонкость с помощью метода register - это расположение файла рабочего.. В этом случае вы увидите, что файл рабочего сотрудника находится в корне домена. Это означает, что область рабочего обслуживающего персонала будет иметь все происхождение. Другими словами, этот сервисный работник получит события выборки для всего, что находится в этом домене. Если мы зарегистрируем файл рабочего сотрудника в /example/sw.js, тогда рабочий службы увидит только события выборки для страниц, URL которых начинается с/example/(т.е./example/page1/,/example/page2/).

Добавлен

Новая проблема заключается в том, что serviceworker никогда не готов, если страница жестко перезагружена. Последующая перезагрузка мягкой страницы работает нормально. Собственный образец кода Google не работает. См. отчет об ошибке Chrome.

Исправление ошибки было включено в Chrome 44.

Ответ 2

В моем случае - просто закройте вкладку и откройте ее снова...