1
ページが読み込まれるたびにサービスワーカーにメッセージを送信します。サービスワーカーのコントローラ交換は一切実行されません。
最初にページがロードされると、register()が呼び出され、navigator.serviceWorkerの "controllerchange"イベントがリッスンされますが、これは決して発生しません。
サービスワーカーのpostMessagingをいつ開始できるかは、どのようにわかりますか?
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);
});