function askForNPerm() { Notification.requestPermission(function(result) { if(result !== "granted") { } else { if(Notification.permission !== 'denied') { Notification.requestPermission().then(function(result) { }); } } }); } askForNPerm(); if('serviceWorker' in navigator) { window.addEventListener('load', function() { navigator.serviceWorker.register('/sw.js', {scope: '/'}).then(function(registration) { registration.update(); navigator.serviceWorker.addEventListener('message', event => { swMessage(event.data.action); }); navigator.serviceWorker.addEventListener('periodicsync', event => { if (event.tag === 'notification') { event.waitUntil( () => { swMessage(event.data.action); }); } }); if( 'SyncManager' in window) { navigator.serviceWorker.ready.then(registration => { if (registration.sync) { try { async function registerSubSync() { const registration = await navigator.serviceWorker.ready; try { await registration.sync.register("sub-sync"); } catch { } } registerSubSync(); } catch { } } else { } }); navigator.permissions.query({name: 'periodic-background-sync'}).then( (state) => { if( state.state === 'granted' ) { async function registerPeriodicSubSync() { const registration = await navigator.serviceWorker.ready; try { await registration.periodicSync.register("content-sync", { minInterval: 3000, }); } catch { } } registerPeriodicSubSync(); } }); } },function(err) { }); }); } else { // serviceworker/sync not supported }