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