相关疑难解决方法(0)

在后台上下文中的脚本之间进行通信(后台脚本,浏览器操作,页面操作,选项页面等)

我遇到了一个问题,从我的后台脚本发送数据到我的脚本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

6
推荐指数
1
解决办法
4399
查看次数