ato*_*tom 2 javascript google-chrome google-chrome-extension
我通过内容脚本在网页中注入脚本.在脚本中我使用chrome.runtime.sendMessage成功地向后台脚本发送消息.但是我有extensionId硬编码.如何在网页中动态注入扩展ID以将消息发送到后台脚本?
chrome.runtime.sendMessage(extensionIdHardCoded, {
msg: data
},
function(response) {});
Run Code Online (Sandbox Code Playgroud)
Xan*_*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 */
Run Code Online (Sandbox Code Playgroud)
或者,您可以添加一个不可见的DOM节点,该节点将包含ID作为内容或某些属性,并从注入的脚本中读取该节点.