javascript - 在获取事件监听器中获取服务 worker 范围

标签 javascript service-worker progressive-web-apps service-worker-events

我想在获取事件监听器中访问我的服务 worker 的范围。我计划的解决方法是使用 window.location.host,但 window 在 service worker 中不可用。我还尝试使用 ServiceWorkerRegistration.scope ( MDN doc ),它会返回我想要的值,但这在获取事件处理程序中也是不可访问的。

我希望有类似于 event.scope 的东西(在注册处理程序中可用),但用于获取处理程序。这可能吗?

最佳答案

在 Chrome 开发工具中进行了一些挖掘之后,我找到了我正在寻找的变量:self.location.host。这引用了具有“位置”属性的 ServiceWorkerGlobalScope。

我在 Google Chrome 团队的 example service worker 中发现了类似的用法使用 self.location.origin 代替:

// Skip cross-origin requests, like those for Google Analytics.
  if (event.request.url.startsWith(self.location.origin)) { ... }

关于javascript - 在获取事件监听器中获取服务 worker 范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47144179/

相关文章:

html5-appcache - Service Worker和AppCache之间的比较

javascript - 什么会导致 Promise 在此处被 'InvalidStateError' 拒绝?

javascript - 渐进式 Web 应用程序和缓存 UI

javascript - 我想在 chrome 的控制台中显示一个对象的值

javascript - 解析字符串以获取数组详细信息

javascript - ServiceWorker刷新加载工作的页面

javascript - 渐进式 Web 应用程序中的路由

ionic-framework - Ionic 4 PWA Angular 8 - 无法通过服务 worker 错误获取开始 URL

javascript - 仅在表单提交时导航至页面

JavaScript 函数调用