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
    });  

back.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. onMessageとsendMessageをonRequestとsendRequestに置き換えました。PORTエラーが発生しました
  2. また、インラインスクリプトを置き換える.jsファイルから外部スクリプトをロードしてみました。-空白のコンソール!

コードにバグはありますか?どこを間違えているのですか?

4

0 に答える 0