我正在尝试使用以下代码从background.js
向content.js
发送消息:
背景
chrome.runtime.sendMessage({'method': 'test'});
内容
chrome.runtime.onMessage.addListener(function(message,sender,sendResponse){
if(message.method == 'test')
console.log('Got message');
});
当background.js
收到来自popup.js
的特定邮件时,会在点击事件中发送后台邮件。因此,用户单击弹出窗口中的按钮,然后将消息发送到后台,然后发送到内容。
我感觉我的问题与以下事实有关:当弹出窗口(这是一个单独的选项卡)中单击按钮时,内容脚本不会接收它,因为它不是当前活动的选项卡。 / p>
请帮帮我。
答案 0 :(得分:13)
Chrome API中有2个sendMessage
个功能。
chrome.runtime.sendMessage
向所有打开扩展程序页(即背景,弹出窗口等)发送消息chrome.tabs.sendMessage
向所有内容脚本发送消息,该消息来自给定标签中的扩展(可能按帧ID过滤)因此,要向内容脚本发送消息,您需要使用chrome.tabs
。要从内容脚本(或扩展页面)发送消息,您需要使用chrome.runtime
。
在这两种情况下,事件都为chrome.runtime.onMessage
。
有关详细信息,请参阅Messaging docs。