【发布时间】:2019-09-24 04:49:00
【问题描述】:
我的 window.js 中有这个...
const wb = new Workbox('sw.js');
wb.messageSW({type:'START'});
wb.addEventListener('message', e=>{
console.log(e);
});
...在我的 sw.js 中,我有...
self.addEventListener('message', (e)=>{
if (e.data) {
switch(e.data.type) {
case 'START':
//do some processing here...
//...then how do I send a message to the client here so...
//...that it will be received by the wb.addEventListener('message',... in window.js?
break;
}
}
});
我尝试通过 e.ports[0] 中的 MessagePort.postMessage() 发送,但没有成功。我觉得这是基本的东西,尤其是在使用 Workbox 类时,但我就是无法让它工作。
我最后的手段是使用 BroadcastChannel(带有 polyfill),但我先尝试这个,因为它可能不需要任何 polyfill 才能工作。
【问题讨论】: