我正在尝试将background.js中的结果数据发送到内容脚本。
这是内容脚本部分:
addMaterias()
这是background.js:
List
这在HTTP请求之后很好地获取了数据。 ...
chrome.runtime.sendMessage(keyword, function(response) {
try{
console.log("Response: "+ response[data]);
}catch(e){
console.log(e);
}
});
...
部分的chrome.runtime.onMessage.addListener(function(request,sender,sendResponse){
...
xhrGet(url, function(xhr){
console.log(xhr.responseText);
var obj = JSON.parse(xhr.responseText);
var result = "";
for(var i = 0 ; i < obj.mean.length ; i++){
result+=obj.mean[i];
if(i != (obj.mean.length-1)){
result+=", ";
}
}
console.log(result); //***Here***
sendResponse({data: result});
});
...
});
function xhrGet(url, callback){
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.onreadystatechange=function(){
if(this.readyState==4){
callback(this)
}
};
xhr.send()
}
打印我想要的结果。
但是,据我所知,console.log(result)
将结果数据作为***Here***
变量返回到内容脚本,该变量是回调函数的参数。但是,它继续打印sendResponse()
。因此,我想response
在发送数据时会出现问题,因为undefined
意味着background.js
尚未收到任何数据。
有什么问题,我该如何解决?