【发布时间】:2017-12-27 06:32:39
【问题描述】:
我正在使用这样的东西来注销我的服务人员:
window.addEventListener("unload", () =>{
registration.unregister().then(function(successs) {
if(successs){
console.log("Unregister succesfull!");
}
else {
console.log("unregister unsuccessfull!!");
}
});
});
由于unregister函数返回一个promise,看来unregister过程是asnyc。那么在卸载事件上进行注销是否可靠?
我已经在 Chrome 上进行了测试,它可以工作,但在规范或任何地方都找不到任何可以验证我所做的事情是否总是有效的东西。
更多信息
我知道在文档卸载时取消注册服务人员似乎很奇怪。但我没有使用服务工作者进行缓存或通知或其他 PWA 的东西。我用来提供在运行时生成的虚拟 HTML 页面。所以我只是打开一个带有一些虚拟 src 的 iframe 并开始拦截来自服务工作者的 iframe 的所有请求。我希望在用户关闭选项卡后取消注册此服务人员。
【问题讨论】:
-
它可能会起作用,但是...您能详细说明您要解决的问题吗?使用仅在您离开当前页面之前保持注册状态的服务工作者听起来不太理想。
-
有一个 github issue here,但我认为管理这样的 service worker 不是一个好主意。
-
我不想使用 service worker 在 IndexedDB 中保存任何内容。我只想在用户关闭选项卡后清理服务人员。请参阅我的问题的更多信息部分