Chrome 扩展:如何让网页访问由我的内容脚本定义的功能?

Chrome Extension: How do I get a web page to access functions defined by my content script?

我正在编写一个 Chrome 扩展,我让它注入一个内容脚本,该脚本循环访问一些元素并附加一个 onclick 属性 到它们发送向我的后台脚本发送一条消息,以在 DOM(内容脚本中定义的函数)上执行自定义函数。要从网页向扩展程序发送消息,我必须指定扩展程序 ID,到目前为止,我是从扩展程序菜单中手动获取的。我能否设法查询扩展程序自己的 ID,以便我可以注入与我的内容脚本对话的代码?还有其他方法可以做我想做的事吗?

为每个元素注入 DOM 的代码如下所示

targets[current].element.setAttribute("onclick", `chrome.runtime.sendMessage(${EXTENSION_ID}, this.id)`);

有许多方法可以在您正在查看的特定选项卡和您的后台脚本之间交换信息。您可以在 this answer.

上查看这些内容

Chrome 扩展 ID 问题的解决方案是使用 chrome.runtime.id 获取扩展 ID 并将其与其他代码一起注入所需页面,然后使用它发回消息。