Files
chinese-family-tree-2/lib/register-sw.ts
T
freedakgmail 81dbf709aa 0.0.1.1
2025-11-23 08:04:43 +08:00

49 lines
1.3 KiB
TypeScript

export function registerServiceWorker() {
if (typeof window === "undefined" || !("serviceWorker" in navigator)) {
console.log("Service Worker 不被支持")
return
}
const register = () => {
navigator.serviceWorker
.register("/sw.js")
.then((registration) => {
// 检查更新
registration.addEventListener("updatefound", () => {
const newWorker = registration.installing
if (newWorker) {
newWorker.addEventListener("statechange", () => {
if (newWorker.state === "installed" && navigator.serviceWorker.controller) {
// 新的 Service Worker 已安装
}
})
}
})
})
.catch((error) => {
console.error("Service Worker 注册失败:", error)
})
}
// 如果页面已经加载完成,直接注册;否则等待 load 事件
if (document.readyState === "complete") {
register()
} else {
window.addEventListener("load", register)
}
}
export function unregisterServiceWorker() {
if (typeof window === "undefined" || !("serviceWorker" in navigator)) {
return
}
navigator.serviceWorker.ready
.then((registration) => {
registration.unregister()
})
.catch((error) => {
console.error("Service Worker 注销失败:", error)
})
}