Google Chrome拡張機能を作成しています。私は簡単に前後にメッセージを渡すことができる段階に達しましたが、私は応答コールバックの使用に問題があります。私の背景ページはメッセージページを開き、メッセージページはバックグラウンドからより多くの情報を要求します。メッセージページが応答を受け取ると、メッセージページの標準テキストの一部を、応答に基づいたカスタムテキストに置き換えたいと考えています。コードは次のとおりです。レスポンスコールバック後のGoogle Chrome拡張機能の更新テキスト
chrome.extension.sendRequest({cmd: "sendKeyWords"}, function(response) {
keyWordList=response.keyWordsFound;
var keyWords="";
for (var i = 0; i<keyWordList.length; ++i)
{
keyWords=keyWords+" "+keyWordList[i];
}
document.getElementsByClassName("comment")[1].firstChild.innerHTML=keyWords;
alert (document.getElementsByClassName("comment")[1].firstChild.innerHTML);
});
最初の質問:これはすべてうまくいくようですが、ページのテキストは変更されません。ページのロードが完了した後でコールバックが完了し、コールバックが完了する前にコードの残りの部分が終了するので、私はほぼ確実です。新しいテキストでページを更新するにはどうすればよいですか?コールバックが完了するのを聞くことができますか?
第2質問:私が最初に実行しようとしている手順では、メッセージページを開き、メッセージページからバックグラウンドからキーワードリストを要求します。私は常にキーワードリストが必要なので、タブを作成すると、それを送信するほうが意味があります。それをしてもいいですか?ここではメッセージページを開き、背景からのコードは次のとおりです。2番目の質問の線に沿って
//when request from detail page to open message page
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
if(request.cmd == "openMessage") {
console.log("Received Request to Open Message, Profile Score: "+request.keyWordsFound.length);
keyWordList=request.keyWordsFound;
chrome.tabs.create({url: request.url}, function(tab){
msgTabId=tab.id; //needed to determine if message tab has later been closed
chrome.tabs.executeScript(tab.id, {file: "message.js"});
});
console.log("Opening Message");
}
});
、私はまた、バックグラウンドでこれを試してみました:
//when request from detail page to open message page
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
if(request.cmd == "openMessage") {
console.log("Received Request to Open Message, Profile Score: "+request.keyWordsFound.length);
keyWordList=request.keyWordsFound;
var keyWords="";
for (var i = 0; i<keyWordList.length; ++i)
{
keyWords=keyWords+" "+keyWordList[i];
}
console.log(keyWords);
chrome.tabs.create({url: request.url}, function(tab){
msgTabId=tab.id; //needed to determine if message tab has later been closed
chrome.tabs.executeScript(tab.id, {code: "document.getElementsByClassName('comment')[1].firstChild.innerHTML=keyWords;", file: "message.js"});
});
console.log("Opening Message");
}
});
しかし、これは、どちらかそれを動作しません。スクリプトは実行されません。
上記の2番目の質問の行に沿って、私もこれを試しました: – Jerome