cro*_*dog 2 javascript service-worker progressive-web-apps service-worker-events
我想在获取事件侦听器内访问我的服务工作人员的范围。我计划的解决方法是使用window.location.host
, 但window
在服务工作人员内部不可用。我还尝试使用 ServiceWorkerRegistration.scope (MDN doc),它将返回我想要的值,但这在 fetch 事件处理程序中也无法访问。
我希望有类似的东西event.scope
(在注册处理程序中可用),但用于获取处理程序。这可能吗?
在 Chrome 开发工具中进行一些挖掘后,我找到了我正在寻找的变量:self.location.host
。这引用了 ServiceWorkerGlobalScope,它具有“位置”属性。
我在 Google Chrome 团队的示例 Service Worker中发现了类似的用法,使用 self.location.origin 代替:
// Skip cross-origin requests, like those for Google Analytics.
if (event.request.url.startsWith(self.location.origin)) { ... }
Run Code Online (Sandbox Code Playgroud)