- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我一直在查看网络推送通知并遇到了以下代码段
如果有多个 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 注册:
/path/to/sw.js
, 注册范围 /path/to/
/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/
我想做什么? 我正在创建一个渐进式 Web 应用程序 (PWA),为了正确发送升级应用程序,我正在处理通知用户的步骤,一旦用户说“升级”,serviceWorker 调用 skipWaiting()
我正在尝试在 Chrome 中测试推送通知功能。我在此处克隆了 Google 提供的示例 Chrome 推送通知 Web 应用程序:https://github.com/GoogleChrome/sa
我正在用 Service Workers 编写我的第一个应用程序,并试图获得注册以便与 pushManager 进行交互。 我可以使用以下任一方法执行此操作: nagivator.serviceWor
I'm wondering why ServiceWorkerRegistration has an updatefound event but no event that fires as s
这是一个奇怪的。 我正在开发 Django/Bootstrap 3 网络应用程序,最近我开始在 JavaScript 控制台中收到此错误: Failed to register/update a Se
我最近在和服务人员一起玩。我在Service Worker文件中写了一些代码,突然它坏了。是否有人知道“ServiceWorker脚本评估失败”是什么意思,何时可能出现? 最佳答案 通常,这意味着软件
在 ServiceWorker 范围内使用 RequireJS 导入外部库的正确方法是什么? 在 WebWorkers 范围内我们可以使用 importScripts() RequireJS in w
我有一个关于 ServiceWorkers 的问题。我知道这些 Worker 可能会被用户代理终止。如此终止的 ServiceWorker 是否仍然能够接收推送通知并唤醒它们? 如果没有,是否有关于该
我正在尝试更新我的 ServiceWorker。 我有一个旧的服务 worker ,一些窗口在它的控制之下。现在有一个新版本的ServiceWorker。它安装正确。但它不会为新页面激活。我的目标是为
自从 Google Chrome 新更新(版本 69.0.3497.92(官方版本)(64 位))以来,我在导航器中找不到 serviceWorker 服务。实际上我可以按如下方式注册我的 Servi
我已经实现了 ServiceWorker在我的一些网络应用程序上利用离线功能和一些与 ServiceWorkers 相关的其他好东西。现在,一切正常,直到我添加了一些外部嵌入式脚本。我在我的网络应用程
我正在尝试安装一个 ServiceWorker,它会在我每次更改当前使用的缓存版本时清除缓存。 我在 v0.0.1 缓存中缓存了 index.html,如果缓存版本更改为 v0.0.2 或其他任何版本
好的,我才刚刚开始使用 Service Workers。 我的 sw.js 中有以下代码: const cacheName = "v2" // Call Install Event self.addE
navigator.serviceWorker.register('/service-worker.js'); 如何在不初始化额外 AJAX 请求的情况下检索 /service-worker.js h
我致力于将 [Service Worker 技术] 实现到网站中。 除图像 外,一切都按预期工作。 图像根本没有加载。 我想知道这是否是预期的行为,或者是否应该加载图像。 为了重现此错误,我全新安装了
if ('serviceWorker' in navigator) { console.log('Service Worker is supported'); navigator.
我有一个简单的 service worker 安装 self.addEventListener('install', function(event) { console.log('Service
关闭。这个问题需要debugging details .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 上个月关门。 Improve this question 编辑
比如说,我想在 Android 上制作一个闹钟应用程序作为渐进式网络应用程序。 与原生闹钟应用一样,即使没有事件的网页,它也应该在选定的时间收到通知。 起初,我考虑过使用push api。但是当然离线
我的网站有 6 个不同的内容元素,我想通过服务工作线程特定的缓存方法来控制它们。 [预缓存]静态内容(css、js、字体) [缓存回退到网络] CDN(来自 CloudFront S3 的图像) [网
我是一名优秀的程序员,十分优秀!