私が理解したように、ページアクションとコテントスクリプトの間で直接通信する方法はないので、私はそれを行います:
page_action.html: _
chrome.extension.sendRequest(
{to:"background",key:"color",val:"red"},
function(response) {
console.log(response) ;
}
) ;
background.jsで
chrome.extension.onRequest.addListener(
function(request,sender,sendResponse) {
if (request.to == "background") {
console.log("Request recieved to Background") ;
request.to = "content" ;
chrome.extension.sendRequest(request,function(response) {
sendResponse(response) ;
}) ;
}
}
) ;
content.jsで
(function(){
// ...
// Do something initial
// ...
// Now start to listen
chrome.extension.onRequest.addListener(
function(request,sender,sendResponse) {
if (request.to == "content") {
// Do something with request.key and request.val
console.log("Request recieved to Content Script") ;
sendResponse({status:'from content'}) ;
}
}
) ;
}()) ;
ページアクションとバックグラウンド間の通信は完全に機能しますが、バックグラウンドとコンテンツスクリプトの間では何も起こりません。ここで何が欠けていますか?お互いを正しくコミュニケーションする方法は?そして何よりも、ページアクションからコンテンツスクリプトへのより直接的なコミュニケーションを可能にする別の方法はありますか?