Service Worker 是否可以自定义事件?

Are custom events possible in service workers?

是否可以使用 service worker 发送和接收任意事件?

我在想类似的东西:

// main.js
navigator.serviceWorker.triggerEvent('hello');

// service-worker.js
self.addEventListener('hello', someFunction);

我知道我可以用 postMessage 模拟这种行为(比如使用 postMessage('hello');),但我仍然很好奇。

那些事件是"hard-coded"from the spec,所以答案是不,不可能。

除了真正的“任意”要求外,我强烈反对基于以下文档的已接受答案:- Service Worker Extensibility , Example from developer Mozilla 类似于OPs要求根据用户定义的事件实例化一个SW,我一直在拼命等待ServiceWorkerRegistration.travelManager(getSubscription(), permissionState(), subscribe())

的到来

subscribe() 方法将采用事件过滤器选项,例如(minMsecs/meters 位置更新之间、准确性等)

将创建一个新的 ServiceWorker“旅行”事件。 UserAgent 必须能够根据此事件重新实例化先前终止的 ServiceWorker。

每个 UserAgent 一个 GeoLocation 观察器对我来说听起来很省电!

W3C discussion Chrome bug details