从根目录删除/serviceworker.js后,Chrome仍然运行我从webroot中删除的serviceworker。我如何从我的网站和Chrome卸载服务工作者,以便我可以登录回我的网站?
我已经将问题追溯到Service Work的缓存机制,现在我只想删除它,直到有时间调试它。我使用的登录脚本重定向到谷歌的服务器,让他们登录到他们的谷歌帐户。但是我从login.php页面得到的只是一条ERR_FAILED消息。
从根目录删除/serviceworker.js后,Chrome仍然运行我从webroot中删除的serviceworker。我如何从我的网站和Chrome卸载服务工作者,以便我可以登录回我的网站?
我已经将问题追溯到Service Work的缓存机制,现在我只想删除它,直到有时间调试它。我使用的登录脚本重定向到谷歌的服务器,让他们登录到他们的谷歌帐户。但是我从login.php页面得到的只是一条ERR_FAILED消息。
当前回答
打开此页面:chrome://serviceworker-internals,单击“取消注册”按钮。
如果你想注销所有的service worker,打开开发人员工具并在上面的页面上运行这段代码。
document.querySelectorAll("button.unregister").forEach(item=>{ item.click()})
其他回答
你也可以去URL: chrome://serviceworker-internals/从那里注销一个serviceworker。
在谷歌Chrome中,您可以进入开发人员工具(F12) ->应用程序-> Service worker,并从特定域的列表中注销Service worker。
这种方法在网站的开发模式中是有效的,大多数情况下它们运行在本地主机上,这是你可能需要其他项目的开发。
以编程方式删除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。
您应该在设备中检测到两个API: getRegistrations和getregiregistration。service-worker并不是在所有平台上都有一组唯一的api。例如,一些浏览器只有navigator.serviceWorker。getregiregistration,没有navigator.serviceWorker.getRegistrations。所以你应该两者都考虑。
在Chrome中打开
chrome: / / serviceworker-internals / ?devtools
然后在控制台中F12 $ $ (' .unregister”)。forEach(b => b.click())