我对java脚本和PWA都是新手。
我正在尝试使用cache API将我所有的内容images/css/audio/video/.html
加载到缓存中,我使用https://developers.google.com和其他资源成功地做到了这一点。
我现在的问题是:
未捕获(承诺中) ReferenceError:未定义警报
发布于 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()将消息广播到服务工作线程控制下的所有内容,这可能不是您想要的。
https://stackoverflow.com/questions/53763794
复制相似问题