Вам необходимо добавить client.postMessage () для работника службы в случае события 'activ' (которое происходит после завершения кэширования) и navigator.serviceWorker.addEventListener ('message') Fn в индекс страницы контента.html или что-то еще.
Вот код, который я использую:
// 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 () передает сообщениеко всему, что находится под контролем работника службы, чего вы, возможно, не хотите.