15

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);
serg
  • 109,619
  • 77
  • 317
  • 330
ktross
  • 739
  • 1
  • 9
  • 18

1 Answers1

13

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.

Diogo Gomes
  • 2,385
  • 1
  • 19
  • 29
  • 8
    Just want to point on that sendRequest has been deprecated since Chrome 20, and has been replaced by sendMessage, which was the reason I was having problems with this. More info in this answer http://stackoverflow.com/a/11587062/381010 – Joris Feb 18 '13 at 12:20