从根目录删除/serviceworker.js后,Chrome仍然运行我从webroot中删除的serviceworker。我如何从我的网站和Chrome卸载服务工作者,以便我可以登录回我的网站?

我已经将问题追溯到Service Work的缓存机制,现在我只想删除它,直到有时间调试它。我使用的登录脚本重定向到谷歌的服务器,让他们登录到他们的谷歌帐户。但是我从login.php页面得到的只是一条ERR_FAILED消息。


当前回答

以编程方式删除Service worker:

你可以像这样通过编程方式删除service worker:

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

文档:getRegistrations, unregister

通过用户界面移除Service worker

你也可以在Chrome Devtools的Application标签下删除service worker。

其他回答

安全卸载Service Worker

if ('serviceWorker' in navigator) {
      navigator.serviceWorker.getRegistrations().then(function (registrations) {
        for (const registration of registrations) {
          // unregister service worker
          console.log('serviceWorker unregistered');
          registration.unregister();
        }
      });
    }

它也可以在Chrome通过应用程序选项卡:

打开此页面:chrome://serviceworker-internals,单击“取消注册”按钮。

如果你想注销所有的service worker,打开开发人员工具并在上面的页面上运行这段代码。

document.querySelectorAll("button.unregister").forEach(item=>{ item.click()})

在Chrome中打开

chrome: / / serviceworker-internals / ?devtools

然后在控制台中F12 $ $ (' .unregister”)。forEach(b => b.click())

以编程方式删除Service worker:

你可以像这样通过编程方式删除service worker:

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

文档:getRegistrations, unregister

通过用户界面移除Service worker

你也可以在Chrome Devtools的Application标签下删除service worker。