我在后台有
service_worker
正在运行 WebSocket
与 twitch 聊天的连接。我还有 content_script
连接到音乐服务 api,处理当前曲目更改的事件。我需要从 content_script
(当前曲目信息)中提取数据,并在 service_worker
接收带有数据请求的消息时在 WebSocket
脚本中使用它。
是否有机会以最少的不同清单权限的使用来完成我的任务?
重要提示:需要清单 v3
我知道我可以使用
chrome.scripting.executeScript
注入能够从后台处理 chrome.runtime.onMessage
的实用程序脚本,并让我的 content_script
服务 api 了解 window.dispatchEvent
的数据请求,但我不想使用 permissions: ["scripting"]
和我不能直接使用 chrome.runtime.onMessage
,因为由清单属性设置的 chrome
处不存在 content_script
上下文。
我也可以在
WebSocket
运行我的 content_script
但它拒绝连接并出现错误 my_content_script_name.js:37 Refused to connect to 'wss://irc-ws.chat.twitch.tv:413/' because it violates the following Content Security Policy directive: [...]
并且我无法通过清单规则 content_security_policy
对此执行任何操作,因为 Chrome 会引发错误 'content_security_policy.extension_pages': Insecure CSP value
根据@wOxxOm评论(谢谢),需要使用两个
content_scripts
:
"world"
属性)运行 WebSocket
;"world": "MAIN"
中的第二个用于使用页面 API;为了在它们之间进行通信,我们可以使用
CustomEvent
、window.dispatchEvent
和 window.addEventListener
。因此,现在当脚本 #1 与 WebSocket
接收特定命令消息时,我可以调度从脚本 #2 请求数据的事件。