I've been trying to communicate from my Content Script to a background page (for XHR), but then, I've been failing to even establish a communication.
Here's a snippet from content_script.js
$('.genericStreamStory').each(function(){
var link = $(this).find('.uiStreamSource a').attr('href');
$(this).find('.uiStreamFooter').append("<span class='a1' style='color:red !important;'> · Sample</span>");
document.querySelector('.a1').onclick=function(){
//alert('span clicked');
chrome.extension.sendMessage({method: "getHTML", data: 'hello'});
};//end of anonymous function
});
back.js
chrome.extension.onMessage.addListener(function(request, sender, sendResponse) {
if (request.method === "getHTML") {
console.log('check.. '+request.data);
}
});
and finally, manifest.json
{
"name": "App1",
"version": "0.1",
"description": "Yay, I'm so useless.",
"content_scripts": [
{
"matches": ["https://*.facebook.com/*"],
"js": [
"/js/external/jquery.js",
"/js/content_script.js"
]
}
],
"background": {
"scripts": ["/js/back.js"]
},
"manifest_version": 2
}
So this extension basically tries to create append a 'Span' after every facebook post. When I click the Span element, I get the message in the alert box (which I've commented now). Ideally, this action should communicate with my back.js page.
In back.js, I'm logging the message sent by the content script to the console.
But then, I'm literally getting nothing in the console screen!
I've tried the following :
- I replaced onMessage & sendMessage with onRequest & sendRequest. Got a PORT Error
- Also tried loading an external script from a .js file replacing inline script. - Blank console!
Is there any bug in my code? Where am I making a mistake?