Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Chrome Extension - Message Passing from Popup to Content Script

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);
like image 570
ktross Avatar asked May 24 '11 10:05

ktross


1 Answers

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.

like image 86
Diogo Gomes Avatar answered Oct 15 '22 11:10

Diogo Gomes