I am trying to send a message from background.js
to content.js
using the following code:
Background
chrome.runtime.sendMessage({'method': 'test'});
Content
chrome.runtime.onMessage.addListener(function(message,sender,sendResponse){
if(message.method == 'test')
console.log('Got message');
});
The background message is sent when background.js
receives a specific message from popup.js
which occurs on a click event. So the user clicks a button in the popup and a message is sent to background and then to content.
I have a feeling my problem is something to do with the fact that when the button is clicked in the popup (which is a separate tab), the content script does not receive it because it is not the current active tab.
Please help me out.
There are 2
sendMessage
functions in Chrome API.chrome.runtime.sendMessage
sends a message to all open extension pages (i.e. background, popup, etc.)chrome.tabs.sendMessage
sends a message to all content scripts from the extension in a given tab (possibly filtered by frame ID)So, to send a message TO a content script, you need to use
chrome.tabs
. To send a message FROM a content script (or within the extension pages), you need to usechrome.runtime
.The event is
chrome.runtime.onMessage
in both cases.See Messaging docs for more details.