コンテンツスクリプトからバックグラウンドページ(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で、コンテンツスクリプトによってコンソールに送信されたメッセージをログに記録しています。
しかし、その後、コンソール画面には文字通り何も表示されません。
私は以下を試しました:
- onMessageとsendMessageをonRequestとsendRequestに置き換えました。PORTエラーが発生しました
- また、インラインスクリプトを置き換える.jsファイルから外部スクリプトをロードしてみました。-空白のコンソール!
コードにバグはありますか?どこを間違えているのですか?