Chrome Extension - Message Passing from Popup to Content Script

ktross picture ktross · May 24, 2011 · Viewed 11.8k times · Source

I'm trying to pass data from a popup to a content script, but I'm not having any luck. I got it to work the other way around (content -> popup) though. All I want to do is enter text into an input located in the popup and click a submit button which would insert that text into the dom of a web page.

This is what I have:

popup.html

chrome.extension.sendRequest({action:'start'}, function(response) {
    console.log('Start action sent');  
});

contentscript.js

function startExtension() { console.log('Starting Extension'); }

function stopExtension() { console.log('Stopping Extension'); }

function onRequest(request, sender, sendResponse) {
    if (request.action == 'start')
        startExtension()
    else if (request.action == 'stop')
        stopExtension()
    sendResponse({});
}

chrome.extension.onRequest.addListener(onRequest);

Answer

Diogo Gomes picture Diogo Gomes · May 24, 2011

You need to specify to which tab to send to. Like this:

chrome.tabs.sendMessage(tab.id, {action:'start'}, function(response) {
    console.log('Start action sent');
});

If you don't know which is the tab, you can either send to all (probably a bad idea) or make the tab send info first.

For more information check this page: Message Passing.