我遇到了一个问题,从我的后台脚本发送数据到我的脚本pageAction.我的内容脚本添加了一个<iframe />,而JavaScript <iframe />正在从我的后台脚本接收数据,但它似乎没有在我的pageAction.
在我的后台脚本中,我有类似的东西:
chrome.tabs.sendMessage(senderTab.tab.id,
{
foo:bar
});
Run Code Online (Sandbox Code Playgroud)
在我的后台脚本中senderTab.tab.id,onMessageListener中的"sender"在哪里.
在<iframe />由我的内容脚本注入的JavaScript中,我有类似的东西:
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
console.log("received in iframe:", request);
}
});
Run Code Online (Sandbox Code Playgroud)
在<iframe />完全按预期接收该消息.
我在我的脑中放了相同的JavaScript page_action.js,但它没有从后台脚本接收任何数据.chrome.pageAction.show(senderTab.tab.id);在调用之前激活pageActionchrome.tabs.sendMessage(senderTab.tab.id ...
附加到我的pageAction的HTML页面是不是同一个标签的一部分吗?由于这tabId使我能够激活/"显示"图标,我认为用于pageAction的JavaScript中的监听器也应该从chrome.tabs.sendMessage(senderTab.tab.id ...
在我的内容脚本中,我使用以下内容将数据发送到后台脚本:
chrome.runtime.sendMessage({
foo: bar
});
Run Code Online (Sandbox Code Playgroud)
当内容脚本发送上述消息时,pageAction JavaScript正在拾取它.
如何获取后台脚本以正确地将数据发送到我的pageAction?我不希望有pageAction请求/轮询,而是希望pageAction只是监听和接收.例如,如果它显示的是pageAction HTML,它应该能够在后台页面进行更改时实时更新.
javascript iframe google-chrome-extension firefox-addon-webextensions