I have the following files (gist for easy access):
manifest.json
{
name: testmessage,
version: 0.1,
manifest_version: 2,
externally_connectable: {
matches: [*://www.google.com/*]
},
background: {
scripts: [background.js],
persistent: true
},
content_scripts: [
{
matches: [*://www.google.com/*],
js: [content.js]
}
]
}
content.js
chrome.runtime.sendMessage(
eldkfaboijfanbdjdkohlfpoffdiehnb, // PUT YOUR EXTENSION ID HERE
foo,
function (response) {
console.log(response);
}
);
console.log(this is content.js reporting for duty);
background.js
chrome.runtime.onMessageExternal.addListener(
function(request, sender, sendResponse) {
console.log(background.js got a message)
console.log(request);
console.log(sender);
sendResponse(bar);
}
);
console.log(this is background.js reporting for duty);
I can see both ... reporting for duty messages in the respective consoles. But background.js
doesn't receive a message when http://www.google.com loads. Line 5 in content.js
prints undefined
in the console for google.com.
When I run chrome.runtime.sendMessage(eldkfaboijfanbdjdkohlfpoffdiehnb, foo);
in the google.com console it shows up in the background.js console.
What am I doing wrong?