Estoy tratando de obtener el valor de window.location.pathname (o una API de solo lectura de location similar) dentro del contexto de un ServiceWorker. Creo que una forma de hacerlo es enviar esa información desde la página al Service Worker a través de postMessage:
navigator.serviceWorker.ready.then( registration => { registration.active.postMessage({ type: "pathname", value: window.location.pathname }); });como se ve en https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerGlobalScope/message_event
Sin embargo, necesito esos datos en el paso de install del ciclo de vida del SW, por lo que esperar a que el SW se convierta en el activo no es ideal, y prefiero intentar primero obtener esos datos antes para poder pasar por el paso de instalación con eso. información.
Dentro de Service Worker, se puede acceder a self.location a través WorkerGlobalScope.location . Podrás escuchar solicitudes y procesar aquellas que coincidan con el mismo origen de tu dominio.
self.addEventListener('fetch', event => { const requestUrl = new URL(event.request.url) if (self.location.origin === requestUrl.origin) { const requestPathname = requestUrl.pathname } })