【发布时间】:2016-10-20 18:02:17
【问题描述】:
我想在每次页面加载时向服务人员发送一条消息。
第一次加载页面时,它调用 register(),然后监听 navigator.serviceWorker 上的“controllerchange”事件,但这永远不会触发。
我如何知道何时可以开始向服务人员发送消息?
navigator.serviceWorker.register(swURL).then(function(){
var sw;
if (navigator.serviceWorker.controller) {
sw = navigator.serviceWorker.controller;
sw.postMessage('ping');
return;
}
function onchange(){
sw = navigator.serviceWorker.controller;
sw.postMessage('ping');
navigator.serviceWorker.removeEventListener('controllerchange', onchange);
}
navigator.serviceWorker.addEventListener('controllerchange', onchange);
}).catch(function(err) {
// registration failed :(
console.log('ServiceWorker registration failed: ', err);
});
【问题讨论】: