Chrome 扩展程序是否可以直接与服务辅助角色通信?

Is it possible for a Chrome extension to communicate directly with a service worker?

提问人:jimousse 提问时间:11/8/2023 更新时间:11/8/2023 访问量:31

问:

我想展示一些在我的 chrome 扩展程序的 Service Worker 代码中捕获的指标。

我想知道 chrome 扩展程序是否可以直接与您当前正在调试的网页上注册的服务工作者通信?

我现在能想到的唯一方法是让我的注入脚本使用页面中的 postMessage 并将消息转发到我的 devtools 扩展,但这似乎不是很有效。

一个有前途的路径是使用 API chrome.debugger 并使用 Chrome Devtools 协议,但该协议的实验性 Service Worker 部分仅在最新版本(树尖)中可用,并且此版本似乎无法在 chrome 扩展中使用。

有什么建议吗?

谷歌浏览器 google-chrome-extension service-worker chrome-devtools-protocol

评论

0赞 Dai 11/8/2023
“但这似乎不是很有效率。”- 你为什么这么说?
0赞 Dai 11/8/2023
“一个有前途的路径是使用 API chrome.debugger 并使用 Chrome Devtools 协议” - ...是什么让您认为使用调试 API 会比postMessage
1赞 wOxxOm 11/8/2023
Chrome 中最有效的方法是临时将web_accessible_resources iframe 添加到网页,然后使用它来传输 MessageChannel 的端口,如本答案末尾所示,并添加以下步骤:通过消息传递将一个端口传输到 devtools 脚本,将另一个端口传输到页面的 Service Worker。navigator.serviceWorker
0赞 jimousse 11/9/2023
@Dai我希望有一种方法可以直接与服务工作者通信,而不是让页面在中间将消息转发给服务工作者和扩展。
0赞 jimousse 11/9/2023
谢谢@wOxxOm我会尝试的。

答: 暂无答案