我遇到了从后台脚本向我pageAction
的脚本发送数据的问题。我的内容脚本添加了<iframe />
,<iframe />
中的JavaScript正在从我的后台脚本接收数据,但似乎没有在pageAction
中检索到。
在我的后台脚本中,我有类似的内容:
chrome.tabs.sendMessage(senderTab.tab.id,
{
foo:bar
});
其中senderTab.tab.id
是我的后台脚本中onMessage
侦听器中的“发件人”。
在我的内容脚本注入的<iframe />
加载的JavaScript中,我有类似的内容:
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
console.log("received in iframe:", request);
}
});
<iframe />
完全按预期接收消息。
我在page_action.js
中添加了相同的JavaScript,但它没有从后台脚本接收任何数据。在调用chrome.pageAction.show(senderTab.tab.id);
chrome.tabs.sendMessage(senderTab.tab.id ...
激活
我的pageAction附加的HTML页面是不是同一个标签的一部分吗?由于此tabId
使我能够激活/“显示”图标,我认为JavaScript中的侦听器也应该从chrome.tabs.sendMessage(senderTab.tab.id ...
在我的内容脚本中,我使用以下内容将数据发送到后台脚本:
chrome.runtime.sendMessage({
foo: bar
});
当内容脚本发送上述消息时,pageAction JavaScript正在拾取它。
如何让后台脚本正确地将数据发送到我的pageAction?我不希望有pageAction请求/轮询,而是希望pageAction只是监听和接收。例如,如果它显示的是pageAction HTML,它应该能够在后台页面进行更改时实时更新。