如何动态地将chrome扩展ID发送到网页以进行消息传递

How to dynamically send chrome extension ID to a webpage for message passing

本文关键字:网页 消息传递 ID 扩展 何动态 动态 chrome      更新时间:2023-09-26

我通过内容脚本在网页中注入脚本。在脚本中,我使用chrome.runtime.sendMessage成功地向后台脚本发送了一条消息。但是我的分机号是硬编码的。如何在网页中动态注入扩展id以向后台脚本发送消息?

chrome.runtime.sendMessage(extensionIdHardCoded, {
      msg: data
    },
    function(response) {});

首先,如果您已经有了内容脚本,则不必使用externally_connectable进行通信——您可以使用自定义事件与将其转发到后台的内容脚本进行通信。


也就是说,在注入脚本之前,您可以使用chrome.runtime.id并将其传递到窗口上下文:

var script = document.createElement('script');
script.textContent = "var extensionId = " + JSON.stringify(chrome.runtime.id);
(document.head||document.documentElement).appendChild(script);
script.parentNode.removeChild(script);
/* now inject your script */

或者,您可以添加一个不可见的DOM节点,该节点将包含ID作为内容或某个属性,并从注入的脚本中读取该ID。

像这样使用chrome.runtime.id

chrome.runtime.sendMessage(chrome.runtime.id, {
    msg: data
},
function(response) {});