我正在创建一个 Chrome 扩展程序,它通过 inject.js 在页面上注入 HTML 表单,当输入查询并按下按钮时,通过 background.js 进行 API 调用。然后将内容带回 inject.js 脚本并进行处理。
当我第一次尝试通过 inject.js 拨打电话时,我收到以下错误:
Error in event handler for 'undefined': fetchResult is not defined ReferenceError: searchResult is not defined
奇怪的是,当我稍等片刻并再次按下查询时。
我怀疑 fetchresult 第一次是未定义的,因为获取查询需要一些时间,但我不知道如何解决这个问题。
注入.js:
function fetch() {
var fetchResult;
var fetchquery = document.getElementById('field').value;
chrome.extension.sendMessage({greeting: fetchquery}, function(response) {
fetchResults = response.farewell
constructHTML(fetchResultsResults)
});
};
背景.js:
function loadXMLDoc(query)
{
if (query){
// new cross origin XML request
xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
fetchResult = JSON.parse(xmlhttp.responseText);
}
}
xmlhttp.open("GET","http://XXXXXXXXXXXXXXX&q="+query, true);
xmlhttp.send();
return fetchResult;
} else {
return "noquery";
}
};
chrome.extension.onMessage.addListener(function(request, sender, sendResponse) {
if (loadXMLDoc(request.greeting) != "noquery"){
sendResponse({farewell: loadXMLDoc(request.greeting)})
}
});
任何帮助将不胜感激!