我一直在尝试从我的内容脚本与背景页面(对于 XHR)进行通信,但是,我什至无法建立通信。
这是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
});
返回.js
chrome.extension.onMessage.addListener(function(request, sender, sendResponse) {
if (request.method === "getHTML") {
console.log('check.. '+request.data);
}
});
最后是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
}
所以这个扩展基本上试图在每个 Facebook 帖子之后创建一个“跨度”。当我单击 Span 元素时,我会在警报框中收到消息(我现在已经评论过)。理想情况下,此操作应与我的 back.js 页面进行通信。
在 back.js 中,我将内容脚本发送的消息记录到控制台。
但是,我在控制台屏幕上什么也没有!
我尝试了以下方法:
- 我用 onRequest 和 sendRequest 替换了 onMessage 和 sendMessage。出现端口错误
- 还尝试从替换内联脚本的 .js 文件加载外部脚本。- 空白控制台!
我的代码中有错误吗?我在哪里犯错?