document.ononline
是浏览器中可用的事件。是否有服务工作者代码支持的等效事件,它没有DOM访问权限?
我看到的所有示例代码都在处理请求的过程中检查网络状态。为了向服务器或云提交本地更新,最好立即响应网络可用性。
我在文档方面找到的最好的是https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerGlobalScope,它只列出了这些事件:
其中,sync似乎与我所寻求的最相似,但它取决于SyncManager的使用,并且其文档充满了警告,禁止在生产代码中使用。
答案 0 :(得分:0)
我不确定SW中是否有可用的事件。有人应该证实这一点。
您可以通过在页面的JS中使用ononline事件处理程序逻辑解决此问题,该逻辑可以向SW通知连接更改。这也是在UI中为用户处理任何通知的适当位置。
Spesifically:
postMessage API非常有用,可用于在页面和SW之间传递基本上任何数据。请注意,我的提案没有任何特定消息,只需传递{“new_status”:“online”}等内容。
答案 1 :(得分:0)
这是一个老问题,但我目前感兴趣。我发现虽然 MDN 目前 says it's supported 在(共享)WorkerGlobalScope 中,但我现在正坐在我的断点上使用 Chrome DevTools 和 ServiceWorkerGlobalScope 的服务工作者没有“在线”属性。然而,“navigator.onLine”指示器似乎有效。您至少可以检查并立即返回缓存的响应。
我为在线和离线事件添加了事件侦听器,但均未触发,因此似乎不受支持。我可以想到不支持它的合理理由,但听到真实的理由会很有趣。