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

时间:2015-12-22 02:18:44

标签: javascript google-chrome google-chrome-extension

我通过内容脚本在网页中注入脚本。在脚本中我使用chrome.runtime.sendMessage成功向后台脚本发送消息。但是我有extensionId硬编码。如何在网页中动态注入扩展ID以将消息发送到后台脚本?

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

2 个答案:

答案 0 :(得分:9)

首先,如果您已有内容脚本,则不必使用externally_connectable进行通信 - 您可以use custom events与内容脚本进行通信,以便将其转发给后台

也就是说,您可以使用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包含为内容或某个属性,并从注入的脚本中读取该节点。

答案 1 :(得分:1)

像这样使用chrome.runtime.id

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
   YourTableViewCell *cell = ...
   cell.delegate = self;
}
- (void) pushToViewController {
     [self.navigationController pushViewController:someViewController animated:YES];
}