我开始了解服务工作者并创建了一个简单的测试者。它似乎在 Chrome 上可以正常注册、激活和工作,但在 Firefox 上却不行。
这是 sw.js (从我的根文件夹提供):
console.log("sw");
self.addEventListener("install", (event) => {
self.skipWaiting();
console.log("Installed!");
});
self.addEventListener("activate", function () {
clients.claim();
console.log("Activated!");
});
self.addEventListener("fetch", (event) => {
console.log("fetch");
});
self.addEventListener("push", (event) => {
console.log("push");
});
Run Code Online (Sandbox Code Playgroud)
我将其加载到入口点:
if ("serviceWorker" in navigator) {
window.addEventListener("load", () => {
navigator.serviceWorker
.register("/sw.js")
.then((registration) => {
console.log("SW registered: ", registration);
})
.catch((registrationError) => {
console.log("SW registration failed: ", registrationError);
});
});
}
Run Code Online (Sandbox Code Playgroud)
Chrome 控制台显示了我所期望的内容:
SW registered: >ServiceWorkerRegistration
[...]
state: "activated"
scope: "https://my.web.site/"
sw
Installed!
Activated!
fetch …Run Code Online (Sandbox Code Playgroud)