How to install & uninstall service worker programmatically?
Let's follow the code below:
Install
function installServiceWorker() { if('serviceWorker' in navigator) { navigator.serviceWorker.register('./sw.js').then(function(registration) { console.log('[BROWSER] - Service worker registration successful with scope : ' + registration.scope); }, function(err) { console.error('[BROWSER] - Service worker registration failed :', err); }); } }
Uninstall
function uninstallServiceWorker() { if('serviceWorker' in navigator) { navigator.serviceWorker.getRegistrations().then(function(registrations) { for(let registration of registrations) { console.log('[BROWSER] - Uninstalled service worker successful.', registration); registration.unregister(); } }); } }
sw.js
self.addEventListener('install', function(event) { console.log('[SERVICE-WORKER] - Service worker installed'); }); self.addEventListener('activate', function(event) { console.log('[SERVICE-WORKER] - Service worker activated'); event.waitUntil(self.clients.claim()); });
index.html
<!-- Service Worker: Install & Uninstall Example ----------------------------------- Step 1 : Create file index.html & sw.js Step 2 : You need to run this app at http://{host} Step 3 : Done ----------------------------------- Reference : - https://developers.google.com/web/fundamentals/primers/service-workers - https://stackoverflow.com/a/33705250/9278668 --> <html> <head> <title>Service Worker: Install & Uninstall Example</title> </head> <body> <h1>Service Worker: Install & Uninstall Example</h1> <button onclick="installServiceWorker()">Install Service Worker</button> <button onclick="uninstallServiceWorker()">Uninstall Service Worker</button> <button onclick="inspectServiceWorker()">Inspect Service Worker</button> <br /><br /> Open : <a href="chrome://inspect/#service-workers">chrome://inspect/#service-workers</a> for <b>inspect</b> <i>service worker</i> in google chrome <br /><br /> <img src="sw-lifecycle.png"> </body> </html> <script type="text/javascript"> function installServiceWorker() { if('serviceWorker' in navigator) { navigator.serviceWorker.register('./sw.js').then(function(registration) { console.log('[BROWSER] - Service worker registration successful with scope : ' + registration.scope); }, function(err) { console.error('[BROWSER] - Service worker registration failed :', err); }); } } function uninstallServiceWorker() { if('serviceWorker' in navigator) { navigator.serviceWorker.getRegistrations().then(function(registrations) { for(let registration of registrations) { console.log('[BROWSER] - Uninstalled service worker successful.', registration); registration.unregister(); } }); } } function inspectServiceWorker() { alert('Open -> chrome://inspect/#service-workers'); window.location = 'chrome://inspect/#service-workers'; } </script>
You need run this app on http://{host} .
For developer tools, you can inspect the service workers at chrome://inspect/#service-workers
Reference :
- Service Worker Fundamental - Developers.Google.com
- Removing Service Worker Programmatically - StackOverflow.com
0 komentar: