inject.jsを介してページにHTMLフォームを挿入するChrome拡張機能を作成しています。クエリが入力され、ボタンが押されると、background.jsを介してAPI呼び出しが行われます。その後、コンテンツはinject.jsスクリプトに戻され、処理されます。
inject.jsを介して最初に電話をかけようとすると、次のエラーが発生します。
Error in event handler for 'undefined': fetchResult is not defined ReferenceError: searchResult is not defined
奇妙なことに、少し待ってもう一度押すと、クエリがフェッチされます。
クエリをフェッチするのに少し時間がかかるため、最初はfetchresultが未定義であると思われますが、これを修正する方法がわかりません。
inject.js:
function fetch() {
var fetchResult;
var fetchquery = document.getElementById('field').value;
chrome.extension.sendMessage({greeting: fetchquery}, function(response) {
fetchResults = response.farewell
constructHTML(fetchResultsResults)
});
};
background.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)})
}
});
どんな助けでも大歓迎です!