0

我一直在尝试从我的内容脚本与背景页面(对于 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 中,我将内容脚本发送的消息记录到控制台。

但是,我在控制台屏幕上什么也没有!

我尝试了以下方法:

  1. 我用 onRequest 和 sendRequest 替换了 onMessage 和 sendMessage。出现端口错误
  2. 还尝试从替换内联脚本的 .js 文件加载外部脚本。- 空白控制台!

我的代码中有错误吗?我在哪里犯错?

4

0 回答 0