当前位置: 首页 > 知识库问答 >
问题:

服务工作人员是否支持ononline事件?

牧献
2023-03-14

文档。ononline是浏览器中可用的事件。服务工作者代码是否支持没有DOM访问权限的等效事件?

我看到的所有示例代码都在处理请求的过程中检查网络状态。为了向服务器或云提交本地更新,最好立即响应网络可用性。

我能找到的最好的文档是https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerGlobalScope它只列出了这些事件:

  • 激活

其中,sync看起来最像我所寻求的,但它取决于SyncManager的使用,而这方面的文档中充满了关于在生产代码中使用SyncManager的警告。

共有2个答案

阎懿轩
2023-03-14

这是一个老问题,但我现在很感兴趣。我发现,虽然MDN目前表示它在(共享)WorkerGlobalScope中受支持,但我现在使用Chrome DevTools在我的service worker中遇到了一个断点,并且ServiceWorkerGlobalScope没有“ononline”属性。然而,“navigator.onLine”指示器似乎起作用。您至少可以对此进行检查,并立即返回缓存的响应。

我为在线和离线事件添加了事件侦听器,但两个事件都没有被触发,因此它似乎不受支持。我能想出不支持它的合理理由,但听到真实的理由会很有趣。

南宫才艺
2023-03-14

我不确定西南是否有这样的活动。应该有人证实这一点。

您可以通过在页面的JS中使用ononline事件处理程序逻辑来解决此问题,它可以将连接更改通知SW。这也是为用户处理UI中任何通知的适当位置。

特地:

  • SW注册onmessage处理程序
  • 客户端/页面JS为ononline事件注册处理程序
  • 连接更改时,处理程序通过postMessage API通知软件
  • SW从客户端接收连接更改消息,并相应地采取行动

postMessage API非常有用,可以用来在页面和SW之间传递基本上任何数据。请注意,我的建议没有任何特殊的信息,只需传递诸如{“new_status”:“在线”}等内容。

 类似资料:
  • 尽管MySQL AB公司拥有MySQL服务器和MySQL手册的所有版权,对那些从财政上帮助我们开发MySQL服务器(如向我们支付开发新特性的费用,或为我们提供用于MySQL服务器开发的硬件)的下述公司,我们深表感谢和赞赏。 ·VA Linux / Andover.net 资助复制。 ·NuSphere MySQL手册的编辑。 ·Stork Design studio 1998-2000期间使用的M

  • 这与渐进式Web应用程序中使用的serviceworker API有关。有人能帮我理解服务人员安装事件和激活事件之间的区别吗? 以下是我的理解, 安装事件是注册服务辅助程序后发生的第一个事件 除了上面的陈述,我的问题是两个事件之间到底有什么区别,它们都是一个接一个地运行的,如果是这样,为什么我们需要两个事件? 更新:共享可能有帮助的资源。我正在读这个。https://developers.goog

  • 我试图用一个服务人员使用Workbox制作一个非常基本的PWA,但是我有一个问题。我正在使用命令行界面来生成服务工作人员,一切正常,完美的亮点,但我不能将我的index.html添加到运行时缓存中。我必须将其添加到全局模式,以便我的网站在离线模式下工作,但当我更新index.html文件时,除非我清除缓存,否则不会更新。我想要和我的js和css一样的东西。当我升级这些文件时,它们会更新。这是我的工

  • 服务工作者中的事件监听器函数似乎是从实现的 这是典型的'提取类型'在一个服务工作者 我想知道我是否可以在服务人员中使用这些“类型”中的任何一种。 从这里:https://developer.mozilla.org/en-US/docs/Web/Events,我可以看到几种类型的事件侦听器,如点击或在线等... 服务人员接受的“类型”是否有任何限制?如果是,我如何从文档中识别这些内容? 我知道对他们

  • 我有一个简单的服务人员,在上向客户发布消息: 当我查看控制台日志时,很明显,事件侦听器是在服务人员发布消息之后注册的。尽管如此,事件侦听器仍然接收消息。 我怀疑这是因为消息是异步调度的: postMessage()计划仅在所有挂起的执行上下文完成后发送MessageEvent。例如,如果在事件处理程序中调用postMessage(),则该事件处理程序将在发送MessageEvent之前运行到完成,