首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >服务工作者缓存进度

服务工作者缓存进度
EN

Stack Overflow用户
提问于 2018-12-13 22:12:32
回答 1查看 681关注 0票数 0

我对java脚本和PWA都是新手。

我正在尝试使用cache API将我所有的内容images/css/audio/video/.html加载到缓存中,我使用https://developers.google.com和其他资源成功地做到了这一点。

我现在的问题是:

未捕获(承诺中) ReferenceError:未定义警报

EN

回答 1

Stack Overflow用户

发布于 2019-05-24 03:40:56

您需要在“activate”事件(在缓存完成后发生)向服务工作者添加一个client.postMessage(),并向您的内容页面index.html或其他内容添加navigator.serviceWorker.addEventListener('message') Fn。

下面是我使用的代码:

// activate with notification TO DOM (!)
global.addEventListener('activate', event => {
  event.waitUntil(async function() {
    await global.clients.claim();
    delay(5000).then(() => {
      data = 'activated';
      console.log('activate msg => dom: ' + data);
      global.clients.matchAll().then(all => all.map(client => client.postMessage(data)));
    });
  }());
});

在内容页面脚本上:

navigator.serviceWorker.addEventListener('message', function(event) {
  console.log('sw message: ' + event.data);
  if ( event.data === 'activated' ) {
    somefunctions();
  }
});

注global.clients.matchAll()将消息广播到服务工作线程控制下的所有内容,这可能不是您想要的。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53763794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档