可能是因为在取消注册服务工作者后,浏览器仍然保留了服务工作者缓存,导致重新注册时出现问题。解决此问题的方法是在服务工作者注册时添加一些随机字符串,以确保每次都是一个新的服务工作者。
以下是代码示例:
// 服务工作者注册代码 if ('serviceWorker' in navigator) { navigator.serviceWorker.register('/sw.js?v=' + Math.random()).then(function(registration) { console.log("Service Worker registered with scope:", registration.scope); }).catch(function(err) { console.log("Service Worker registration failed:", err); }); }
// 服务工作者取消注册代码 if ('serviceWorker' in navigator) { navigator.serviceWorker.getRegistrations().then(function(registrations) { for(let registration of registrations) { registration.unregister(); } }) }
在服务工作者注册时,添加一个带有随机值的查询参数,如“v= Math.random()”,以确保每次都是一个新的服务工作者。这样,当您取消注册并重新注册服务工作者时,浏览器将下载新的服务工作者代码,而不是从缓存中提取旧的服务工作者。