我正在阅读NekR/offline-plugin源代码。在更新方法中,它调用浏览器的ServiceWorker.update()。
我想知道此方法是强制激活新服务工作者(即skipWaiting)还是只是拉动最新的服务工作者并等待用户从浏览器中分离服务工作者(即等待阶段)。
答案 0 :(得分:1)
否,它不会强制新软件获得控制权。这可能会破坏许多应用程序。安装事件被执行,并且如果需要,SW脚本本身负责调用skipWaiting等。
从Service Worker更新过程的具体化可以看出。未计划SkipWaiting。 https://www.w3.org/TR/service-workers-1/#dom-serviceworkerregistration-update
答案 1 :(得分:0)
没有有关使用ServiceWorkerRegistration.update()
跳过等待阶段的信息,它将仅尝试更新服务工作程序并安装新工作程序。您可以尝试使用开发人员工具检查此documentation只是点击“跳过等待”来跳过等待阶段,以便激活新的服务工作者。
答案 2 :(得分:0)
我知道这已经有了答案,但是对于那些想要绕过“跳过等待”的直接方法的人,只需在您的service-worker.js
self.skipWaiting();
因此,下次您更新 service-worker.js 时,它将“跳过等待”。