我通过内容脚本在网页中注入脚本。在脚本中我使用chrome.runtime.sendMessage成功向后台脚本发送消息。但是我有extensionId硬编码。如何在网页中动态注入扩展ID以将消息发送到后台脚本?
chrome.runtime.sendMessage(extensionIdHardCoded, {
msg: data
},
function(response) {});
答案 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];
}