Chrome 扩展程序的服务工作者未在事件中启动

Sti*_*ing 5 google-chrome-extension service-worker

我正在使用清单 V3 创建一个扩展程序,并带有一个设置为侦听“webRequest.onBeforeRequest”的服务工作者 chrome.webRequest.onBeforeRequest.addListener(function(requestDetails) { . . . }, { urls: ['<all_urls>'] }, ['requestBody']);

在我的个人机器(windows)上,扩展程序按预期工作,只要任何选项卡中有 Web 请求,服务工作者就会启动。

但是,在我们的工作机器(mac)上,Web 请求不会自动启动 Service Worker。如果我手动启动它,它会接收事件并正常运行,但是一旦由于空闲而停止,它就不会在下一个 Web 请求时重新启动。如果我转到“chrome://serviceworker-internals/”,我可以看到 service worker 仍在注册,但已停止。

我保持扩展正常运行的唯一方法是让 service worker 的开发人员工具页面保持打开状态(通过检查它),这样它就可以通过永不停止的方式继续工作。

我是否需要为 mac OS 做一些特定的事情,或者是否有任何设置或策略可以限制停止的服务工作者可以侦听的事件?

Jef*_*zik 4

本来可以将此放在评论中,但没有足够的声誉来发表评论。我尝试通过每 10 秒设置一次 setTimeout 循环来解决这个问题(这也是 Gregory Conrad 在评论中建议的),但不幸的是这不起作用,服务工作人员仍然处于非活动状态。在评论中有人说这是一个已知的错误,但看起来它可能不是一个错误,它可能是故意的: https: //www.eff.org/deeplinks/2021/12/chrome-users-beware-manifest -v3-欺骗和威胁。正如链接所说,服务人员使 AdBlock 等浏览器扩展更难有效工作,这将使谷歌受益,因为他们运营着一个主要的互联网广告网络。