diff options
author | zilch40 <wlh233@live.com> | 2020-11-16 15:31:39 +0300 |
---|---|---|
committer | zilch40 <wlh233@live.com> | 2020-11-16 15:31:39 +0300 |
commit | 871470c4cd13a02e947680864574a84eae246cf0 (patch) | |
tree | 8414d26b020681fa0b05384c28bccc08d69e4e4b /assets/js/pwa.js | |
parent | 88fb497815279a64bbfe38e7cdd1676a2b683b77 (diff) |
add PWA support && tweak some pages
Diffstat (limited to 'assets/js/pwa.js')
-rw-r--r-- | assets/js/pwa.js | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/assets/js/pwa.js b/assets/js/pwa.js new file mode 100644 index 0000000..74b3c68 --- /dev/null +++ b/assets/js/pwa.js @@ -0,0 +1,39 @@ +{{ $swfile := resources.Get "/sw.js" }} +{{ $sw := $swfile | resources.Minify }} +if('serviceWorker' in navigator) { + const PREFETCH = true; + const PREFETCH_LINK_RELS = ['index','next', 'prev', 'prefetch']; + function prefetchCache() { + if(navigator.serviceWorker.controller) { + let links = document.querySelectorAll( + PREFETCH_LINK_RELS.map((rel) => { + return 'link[rel='+rel+']'; + }).join(',') + ); + if(links.length > 0) { + Array.from(links) + .map((link) => { + let href = link.getAttribute('href'); + navigator.serviceWorker.controller.postMessage({ + action : 'cache', + url : href, + }); + }); + } + } + } + + navigator.serviceWorker + .register('{{ $sw.Permalink | relURL }}', { scope: '/' }) + .then(() => { + console.log('Service Worker Registered'); + }); + + navigator.serviceWorker + .ready + .then(() => { + if(PREFETCH) { + prefetchCache(); + } + }); +}
\ No newline at end of file |