相关疑难解决方法(0)

navigator.serviceWorker.controller在页面刷新之前为空

我使用angularjs并使用服务工作者接收推送通知.但navigator.serviceWorker.controller在页面刷新之前为空,我不知道如何解决这个问题

一些维修工作者的代码:

self.addEventListener('push', pwServiceWorker.pushReceived);
self.addEventListener('notificationclick', pwServiceWorker.notificationClicked);

// refresh caches
self.addEventListener('activate', function (event)
{
    event.waitUntil(
        caches.keys().then(function (cacheNames)
        {
            return Promise.all(
                cacheNames.map(function (cacheName)
                {
                    return caches.delete(cacheName);
                })
            );
        })
    );
});
Run Code Online (Sandbox Code Playgroud)

并在收到推送时向serviceworker中的客户端发送消息:

self.clients.matchAll().then(function(all) {
    console.log(all);
    all.forEach(function(client) {
        client.postMessage(data);
    });
});
Run Code Online (Sandbox Code Playgroud)

在mainController.js中给出如下消息:

 if (!navigator.serviceWorker || !navigator.serviceWorker.register) {
        console.log("This browser doesn't support service workers");
        return;
    }

    // Listen to messages from service workers.
    navigator.serviceWorker.addEventListener('message', function(event) {
        console.log("Got reply from service worker: " + event.data);
    });

    // Are we being controlled?
    if (navigator.serviceWorker.controller) {
        // …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs service-worker

10
推荐指数
1
解决办法
5612
查看次数

标签 统计

angularjs ×1

javascript ×1

service-worker ×1