网站点击安装导航按钮功能
展开阅读全文

代码如下:

js

if('serviceWorker'in navigator){navigator.serviceWorker.register('https://search.fuyeor.com/sw.min.js')}let deferredPrompt;const addBtn=document.querySelector('.InstallApp');window.addEventListener('beforeinstallprompt',(e)=>{e.preventDefault();deferredPrompt=e;addBtn.style.display='block';addBtn.addEventListener('click',()=>{addBtn.style.display='none';deferredPrompt.prompt();deferredPrompt.userChoice.then((choiceResult)=>{if(choiceResult.outcome==='accepted'){console.log('User accepted the A2HS prompt')}else{console.log('User dismissed the A2HS prompt')}deferredPrompt=null})})});

html

<a class="InstallApp" title="将导航添加至桌面以便于使用(电脑&amp;手机均可添加)" target="_blank" style="display: block;">安装导航</a>

https://search.fuyeor.com/sw.min.js 文件下的内容

var cacheName='search.fuyeor.com/5';const assets=['/zh-cn/','/@assets/icon/btn.svg','/@assets/icon/btn-2.svg','/@assets/icon/right.svg','/@assets/icon/default.png','/@assets/icon/Baidu.png','/@assets/icon/baidu.svg','/@assets/icon/Bing.png','/@assets/icon/global.png','/@assets/icon/bing.jpg','/@assets/icon/Google.png','/@assets/icon/google.jpg','/@assets/icon/duckduckgo.png','/@assets/icon/naver.png','/@assets/icon/naver.jpg','/@assets/icon/Yandex.png','/@assets/icon/yandex.jpg','/@assets/icon/Yahoo.png','/@assets/icon/yahoo.jpg','/@assets/icon/zlibrary.png','/@assets/icon/zlibrary.jpg','/@assets/icon/Qwant.png','/@assets/icon/Qwant.jpg','/@assets/icon/Yaimg.png','/@assets/icon/scholar.png','/@assets/icon/Wikipedia.png','/@assets/icon/Wikipedia.jpg','/@assets/icon/s/baidu.png','/@assets/icon/s/bing.png','/@assets/icon/s/google.png','/@assets/icon/s/qwant.png','/@assets/icon/s/set.svg','/@assets/icon/s/wikipedia.png','/@assets/icon/s/yandex.png','/@assets/icon/s/z-lib.svg','/@assets/scripts.min.js','/@assets/style.min.css?v5','/@assets/keybord.js','/@assets/time.js?v5',];self.addEventListener("install",installEvent=>{installEvent.waitUntil(caches.open(cacheName).then(cache=>{cache.addAll(assets)}))});self.addEventListener('activate',evt=>{evt.waitUntil(caches.keys().then(keys=>{return Promise.all(keys.filter(key=>key!==assets).map(key=>caches.delete(key)))}))});self.addEventListener("fetch",fetchEvent=>{fetchEvent.respondWith(caches.match(fetchEvent.request).then(res=>{return res||fetch(fetchEvent.request)}))});