【发布时间】:2017-06-28 04:32:39
【问题描述】:
我一直在关注渐进式 Web 应用程序上的 this tutorial,我正在尝试找到一种在应用程序离线时向用户呈现某种消息的方法。到目前为止,我的代码与教程几乎相同:
var cacheName = 'demoPWA-v1'; var filesToCache = [ '/', '/index.html', '/js/app.js', '/icons/pwa-256x256.png' ]; self.addEventListener('install', function(e) { console.log('[demoPWA - ServiceWorker] 安装事件已触发。'); e.等待直到( caches.open(cacheName).then(function(cache) { console.log('[demoPWA - ServiceWorker] 缓存应用程序外壳...'); 返回 cache.addAll(filesToCache); }) ); }); self.addEventListener('activate', function(e) { console.log('[demoPWA - ServiceWorker] 激活事件被触发。'); e.等待直到( caches.keys().then(function(keyList) { 返回 Promise.all(keyList.map(function(key) { 如果(键!==缓存名称){ console.log('[demoPWA - ServiceWorker] 删除旧缓存...', key); 返回缓存。删除(键); } })); }) ); 返回 self.clients.claim(); }); self.addEventListener('fetch', function(e) { console.log('[demoPWA - ServiceWorker] Fetch 事件被触发。', e.request.url); e.respondWith( caches.match(e.request).then(function(response) { 如果(响应){ console.log('[demoPWA - ServiceWorker] 从缓存中检索...'); 返回响应; } console.log('[demoPWA - ServiceWorker] 从 URL 检索...'); 返回获取(e.request); }) ); });当我在 Chrome 中的 Application > Service Workers 下选中 Offline 复选框时,我收到了一些错误,如下所示:
我想知道是否有某种方法可以处理此错误,并在这样做的同时向用户显示某种消息,告知他们他们处于离线状态。
【问题讨论】:
-
获取,返回一个承诺。所以你可以抓住错误..
fetch(e.request).catch(function (e) { (*do your stuff*)} -
@Keith 您能否根据该逻辑发布答案?如果可以的话,也许可以更详细地解释一下。
-
可以,但是您会以什么方式通知用户?.. 最简单的就是使用警报,例如现在可以吗?
-
@Keith 我想将消息写入一些 HTML 元素,但是为了展示解决方案,警报会做!
标签: javascript service-worker progressive-web-apps