我通过内容脚本在网页中注入脚本.在脚本中我使用chrome.runtime.sendMessage成功地向后台脚本发送消息.但是我有extensionId硬编码.如何在网页中动态注入扩展ID以将消息发送到后台脚本?
chrome.runtime.sendMessage(extensionIdHardCoded, { msg: data }, function(response) {});
Xan.. 10
首先,如果您已经拥有内容脚本,则不必使用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作为内容或某些属性,并从注入的脚本中读取该节点.
首先,如果您已经拥有内容脚本,则不必使用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作为内容或某些属性,并从注入的脚本中读取该节点.