为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

繁星点点滴滴 2019-10-21 15:00:22
我遇到了将数据从后台脚本发送到我的脚本的问题pageAction。我的内容脚本添加了一个,<iframe />并且中的JavaScript <iframe />正在从我的后台脚本接收数据,但是似乎未在中检索到它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 />完全按预期接收该消息。我将相同的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});  当内容脚本发送上述消息时,pageAction JavaScript会将其拾取。如何获取后台脚本以将数据正确发送到pageAction?我不想有pageAction请求/投票,而是希望pageAction仅监听和接收。例如,如果显示了pageAction HTML,它应该能够在后台页面进行更改时实时更新。
查看完整描述

3 回答

?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

一次只能打开一个 pageAction弹出窗口:为当前窗口的活动选项卡定义了一个弹出窗口,并由用户单击页面操作按钮来打开。通过使用chrome.pageAction.setPopup()并指定,可以为不同的标签分配不同的HTML文档tabId。但是,使用的任何通信方法都只能与当前打开的通信,而不能与多个通信。从您的评论看来,您似乎在谈论的不是实际pageAction弹出窗口。请更详细地描述。

查看完整回答
反对 回复 2019-10-21
  • 3 回答
  • 0 关注
  • 700 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信