当前位置: 首页 > 知识库问答 >
问题:

正在获取获取事件侦听器内的服务工作程序作用域

逄宁
2023-03-14

我想在获取事件侦听器中访问我的服务工作者的作用域。我计划的解决方法是使用窗口。地方主机,但在服务人员内部不可用窗口。我还尝试使用ServiceWorkerRegistration。作用域(MDN doc),它将返回我想要的值,但这在fetch事件处理程序中也是不可访问的。

我希望有类似的事件。作用域(在注册处理程序中可用),但用于获取处理程序。这可能吗?

共有2个答案

柳英资
2023-03-14

我不知道规范是否比这篇文章更新,但是获得服务工作者范围的实际方法是使用:

let scope = self.registration.scope; 

这将返回指定给服务工作者的范围。我必须在我的serviceworker中处理这个问题,因为我们在同一个站点上有几个应用程序可能使用或不使用serviceworker,这取决于开发人员的意愿。

杜辉
2023-03-14

在Chrome开发工具中进行了一些挖掘之后,我找到了我正在寻找的变量:self。地方主机。这引用ServiceWorkerGlobalScope,其属性为“location”。

我在Google Chrome团队使用self的示例服务人员中发现了类似的用法。地方取而代之的是原产地:

// Skip cross-origin requests, like those for Google Analytics.
  if (event.request.url.startsWith(self.location.origin)) { ... }
 类似资料:
  • 如何获取由服务人员的“获取”事件提供服务的页面的完整URL? "self.location"属性似乎只引用站点的根URL。例如,如果页https://example.com/folder/pagename.html正在执行服务工作人员正在拦截的读取,则服务工作人员的self.location属性返回https://example.com。 事件当前目标。地点和活动。明确目标。地点、事件。原始目标和

  • 问题内容: 是否有原因导致代码中显示的动作侦听器内部?另外,如果有,我该如何解决此错误? 问题答案: 您可以使用一个不错的简单技巧… 如果未为按钮指定,则使用按钮的。 现在,如果您确实指定了按钮的属性,并且您仍然想知道文本(对我来说似乎很奇怪),则可以使用更多类似…

  • 我注意到,当服务工作人员脚本本身加载到浏览器中时,不再触发服务工作人员的读取事件。例如,当我们有一个新版本的服务辅助角色时,旧的服务辅助角色读取事件不会被触发。因此,旧的服务工作者不能再检查新服务工作者的内容。 我确信这以前是可能的,我想知道这是否是一个bug,或者是否对此进行了任何更改。我在官方存储库或W3C草稿中没有找到与此更改相关的任何内容。 为了验证fetch事件没有被触发,我用版本号(参

  • **服务器** **客户** 并且我运行它,ip是环回(127.0.0.1),端口是7755。 客户端套接字的对等ip:127.0.0.1 客户端套接字的对等端口6311 -1 0 0 0 我的问题是,如果监听(服务器)套接字只处理客户端的连接,那么它的对等端不应该存在?那个错误的IP和端口是什么?只是垃圾值?

  • 我有一个简单的服务人员,在上向客户发布消息: 当我查看控制台日志时,很明显,事件侦听器是在服务人员发布消息之后注册的。尽管如此,事件侦听器仍然接收消息。 我怀疑这是因为消息是异步调度的: postMessage()计划仅在所有挂起的执行上下文完成后发送MessageEvent。例如,如果在事件处理程序中调用postMessage(),则该事件处理程序将在发送MessageEvent之前运行到完成,

  • 我正在扩展,我想在INVOKE或PRE_INVOKE阶段获得JAXWS Web服务对象。我该怎么做? 为了清楚起见,我需要获取对实现Web服务方法的对象的引用,因此: