UNPKG

1.86 kBJavaScriptView Raw
1/**
2 * @file serviceworker register
3 * @author *__ author __*{% if: *__ email __* %}(*__ email __*){% /if %}
4 */
5
6/* global navigator, document */
7
8// 注册的地址为 sw-precache-webpack-pulgin 生成的 service-worker.js 或者自己手动维护的 service worker 文件
9navigator.serviceWorker && navigator.serviceWorker.register('/service-worker.js').then(() => {
10 navigator.serviceWorker.addEventListener('message', e => {
11
12 // service-worker.js 如果更新成功会 postMessage 给页面,内容为 'sw.update'
13 if (e.data === 'sw.update') {
14 let themeColor = document.querySelector('meta[name=theme-color]');
15 let dom = document.createElement('div');
16
17 themeColor && (themeColor.content = '#000');
18
19 /* eslint-disable max-len */
20 dom.innerHTML = `
21 <style>
22 .app-refresh{background:#000;height:0;line-height:52px;overflow:hidden;position:fixed;top:0;left:0;right:0;z-index:10001;padding:0 18px;transition:all .3s ease;-webkit-transition:all .3s ease;-moz-transition:all .3s ease;-o-transition:all .3s ease;}
23 .app-refresh-wrap{display:flex;color:#fff;font-size:15px;}
24 .app-refresh-wrap label{flex:1;}
25 .app-refresh-show{height:52px;}
26 </style>
27 <div class="app-refresh" id="app-refresh">
28 <div class="app-refresh-wrap" onclick="location.reload()">
29 <label>已更新最新版本</label>
30 <span>点击刷新</span>
31 </div>
32 </div>
33 `;
34 /* eslint-enable max-len */
35
36 document.body.appendChild(dom);
37 setTimeout(() => document.getElementById('app-refresh').className += ' app-refresh-show');
38 }
39 });
40});