我想得到一个
ServiceWorker
从名为
appdashboard
…ServiceWorker安装、运行并从中可见
chrome://serviceworker-internals/
但它的
Navigator.serviceWorker.controller
是空的,所以我无法与它通信。如果我不限制作用域(并将我的ServiceWorker文件移到webroot),它就可以正常工作。
const serviceWorker = navigator
.serviceWorker
.register('appdashboard/dashboard_serviceworker.js', { scope: 'http://localhost/appdashboard/' })
.then((swReg) => {
console.log('[Service Worker (Dashboard)] service worker is registered', swReg);
swRegistration = swReg;
if (navigator.serviceWorker.controller != null) {
console.log("controller is working")
}
if (navigator.serviceWorker.controller == null) {
console.log("controller is NULL!") // <<<< its null :(
}
})
我简化了我的生活
serviceworker
尽可能多地诊断该问题,即使使用此裸机辅助,控制器也是空的。
self.addEventListener('message', function (event) {
console.log('got message')
});
self.addEventListener('activate', function (event) {
console.log('serviceworker activate')
event.waitUntil(self.clients.claim()); // Become available to all pages
});
self.addEventListener('install', function (event) {
console.log('install')
});
self.addEventListener('fetch', function (event) {
console.log('fetch')
});
self.addEventListener('push', (event) => {
console.log('received push')
});
self.addEventListener('notificationclick', function (event) {
console.log('registered notification click!')
});