123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- // Setup the animation loop.
- import TWEEN from '@tweenjs/tween.js'
- function animate (time) {
- requestAnimationFrame(animate)
- TWEEN.update(time)
- }
- requestAnimationFrame(animate)
- if ('serviceWorker' in navigator) {
- let scriptUrl = '/sw.js'
- navigator.serviceWorker.register(scriptUrl).then(function (reg) {
- if (reg.installing) {
- console.log('Service worker installing')
- } else if (reg.waiting) {
- console.log('Service worker installed')
- } else if (reg.active) {
- console.log('Service worker active')
- }
- reg.addEventListener('updatefound', function () {
- if (navigator.serviceWorker.controller) {
- var installingWorker = reg.installing
- installingWorker.onstatechange = function () {
- console.log('installingWorker.state:' + installingWorker.state)
- switch (installingWorker.state) {
- case 'installed':
- // MessageBox.confirm('新的内容已更新完毕,立即刷新页面?', '提示', {
- // confirmButtonText: '确定',
- // cancelButtonText: '取消'
- // }).then(() => {
- // location.reload()
- // }).catch(() => {})
- break
- case 'redundant':
- break
- default:
- }
- }
- }
- })
- if (navigator.serviceWorker) {
- navigator.serviceWorker.addEventListener('statechange', function (e) {
- console.log('statechange: ', e.target.state)
- })
- }
- }).catch(function (error) {
- // registration failed
- console.log('Registration failed with ' + error)
- })
- }
- // 监听localStorage的变化,user_id变化时,要刷新
- window.addEventListener('storage', (event) => {
- if (event.key === 'user_id') {
- location.reload()
- }
- })
- // 触发pwa的安装实践
- var btnPwa = null
- var deferredPrompt = null
- window.addEventListener('beforeinstallprompt', function (e) {
- if (!btnPwa) {
- initPwaBtn()
- }
- deferredPrompt = e
- // 取消默认事件
- e.preventDefault()
- return false
- })
- function initPwaBtn () {
- btnPwa = document.getElementById('btnPwa')
- if (!btnPwa) {
- return
- }
- btnPwa.style.display = 'block'
- btnPwa.addEventListener('click', function () {
- if (deferredPrompt != null) {
- deferredPrompt.prompt()
- // 检测用户的安装行为
- deferredPrompt.userChoice.then(function (choiceResult) {
- console.log(choiceResult.outcome)
- if (choiceResult.outcome === 'dismissed') {
- console.log('用户取消安装应用')
- } else {
- console.log('用户安装了应用')
- btnPwa.style.display = 'none'
- }
- })
- deferredPrompt = null
- }
- })
- }
|