javascript - 注销/删除 Service Worker

标签 javascript html firefox service worker

我有一个糟糕的 Service Worker,它不再更新。我首先注意到 Chrome 中的问题。然后,我将以下代码放入 index.html 文件和 sw.js(服务 worker )文件中。在大多数情况下,它似乎工作正常。 Firefox 似乎是唯一没有移除 service worker 的浏览器。我使用下面的文章创建了注销脚本。

How do I uninstall a Service Worker?

我也用过这篇文章和代码,得到了同样的结果。

How can I remove a buggy service worker, or implement a "kill switch"?

我还收到一条关于 getRegistrations() 的错误消息,说它未定义。也不知道如何解决。

如果您能帮助解决这两个问题,我们将不胜感激。

<script>
navigator.serviceWorker.getRegistrations().then(function(registrations) {
 for(let registration of registrations) {
  registration.unregister();
} });</script>

最佳答案

下面的示例代码将检查在您的浏览器中注册的 service worker 并获取它。

registration.active.scriptURL 将为您提供所有服务 worker 的确切 url。

注册.注销();将删除该服务人员。

链接:https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerRegistration/unregister

if ('serviceWorker' in navigator) {
    navigator.serviceWorker.getRegistrations()
        .then(function(registrations) {
            for(let registration of registrations) {
               if(registration.active.scriptURL == 'http://localhost/my-push/myworker.js'){ registration.unregister(); }
            }
        });
}

如果你想更新 service worker 代码而不是使用 https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerRegistration/update

关于javascript - 注销/删除 Service Worker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49740931/

相关文章:

javascript - 表单发送没有改变任何东西的值

javascript - 使用 jquery 或 javascript 使用相同的 id 创建自动选择框

jquery - 在 Firefox 中更改 <option> 的颜色

javascript - HTML 在 Firefox 中无法正确呈现(在 Chrome 中工作得很好)

javascript - jQuery on() 与其前身的性能对比 [live()、bind()、delegate()]

javascript - 根据悬停图像播放特定音频(javascript)

javascript - 如何仅在定义变量时才运行 JavaScript 代码?

javascript - document.querySelectorAll ":not"内的条件不起作用

HTML 中的 Javascript 加载

html - 下载完整网页的 Firefox 插件?