gpt4 book ai didi

javascript - navigator.serviceWorker 当注册多个 service worker 时

转载 作者:搜寻专家 更新时间:2023-11-01 05:03:48 27 4
gpt4 key购买 nike

我一直在查看网络推送通知并遇到了以下代码段

navigator.serviceWorker

如果有多个 Service Worker,这个问题如何解决?它会返回最后注册的 Service Worker 吗?

关于这方面的文档对我来说并不是很清楚。

最佳答案

Jake Archibald 的“The Service Worker Lifecycle”是一个很棒的资源,如果您还没有读过,我建议您读一读。

每个 service worker 都有自己的 scope .默认情况下,在其最宽松的情况下,范围与服务 worker 脚本提供服务的目录相同。如果需要,您可以在调用 navigator.serviceWorker.register() 时传入更严格的范围。 .

可以为给定来源注册多个具有不同范围的服务 worker 。 (另外:如果您尝试为给定来源注册具有相同范围的多个服务 worker ,即使服务 worker have different URLs ,后续注册也将被视为服务 worker updates ,而不是作为单独的注册。)

如果注册了多个服务 worker ,那么为了确定哪个控制给定的客户端页面,将检查范围。服务人员whose registered scope is most specific ,即最长的匹配范围,是将控制给定客户端页面的范围。

因此,例如,给定以下两个具有相应范围的 service worker 注册:

  • SW 1: /path/to/sw.js, 注册范围 /path/to/
  • SW 2:/path/to/subdir/sw.js,已在 /path/to/subdir/
  • 范围内注册

如果客户端页面的URL是/path/to/index.html,那么SW 1将控制客户端,因为/path/to/是最长的匹配范围。

如果客户端页面的 URL 是 /path/to/subdir/index.html,那么 SW 2 将控制客户端。即使 SW 1 的范围匹配,SW 2 的范围也匹配,并且 SW 2 的范围更具体/更长。

关于javascript - navigator.serviceWorker 当注册多个 service worker 时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41669835/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com