据我了解,Page Action 和 Cotent Script 之间无法直接通信,所以我这样做了:
在page_action.html 中:
chrome.extension.sendRequest(
{to:"background",key:"color",val:"red"},
function(response) {
console.log(response) ;
}
) ;
在后台.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'}) ;
}
}
) ;
}()) ;
Page Action 和 Background 之间的通信完美无缺,但 Background 和 Content Script 之间没有任何反应。我在这里想念什么?如何正确沟通?最重要的是,是否有另一种方式可以让通信更直接地从页面操作到内容脚本?