2011-07-26 27 views
0

私はGoogleの拡張機能を作成しています。ここで私のコンテンツスクリプトは、バックグラウンドから要求されたキーワードのリストに基づいてページを変更します。しかし、新しいinnerHTMLは画面に表示されません。私は実際にメッセージを送信することを決定する前にキーワードを見ることができるようにアラートでそれをklugedしましたが、それはどのようにルーチンが動作するかではありません。コードは次のとおりです。修正されたinnerHTMLはページに表示されません

// MESSAGE.JS // 
//alert("Message Page"); 

var keyWordList= new Array(); 
var firstMessage="Hello!"; 
var contentMessage=document.getElementById("message"); 
contentMessage.value=firstMessage; 
var msgComments=document.getElementsByClassName("comment"); 
msgComments[1].value="Hello Worlds!";//marker to see what happens 

chrome.extension.sendRequest({cmd: "sendKeyWords"}, function(response) { 
    keyWordList=response.keyWordsFound; 
    //alert(keyWordList.length+" key words.");//did we get any keywords back? 
    var keyWords=""; 
    for (var i = 0; i<keyWordList.length; ++i) 
    { 
     keyWords=keyWords+" "+keyWordList[i]; 
    } 
    //alert (keyWords);//let's see what we got 
    document.getElementsByClassName("comment")[1].firstChild.innerHTML=keyWords; 
    alert (document.getElementsByClassName("comment")[1].firstChild.innerHTML);// this is a band aid - keyWords does not show up in tab 
}); 

document.onclick= function(event) { 
    //only one button to click in page 
    document.onload=self.close(); 
}; 

修正されたテキスト領域が実際にタブに表示されるようにするにはどうすればよいですか?

+0

innerHTMLを表示するアラートは正しいですか?何らかのWYSIWYGエディタを修正しようとしていますか? – serg

答えて

1

(私自身の質問に答える)この問題には本当に2つの部分があります。最も単純な部分は、テキストノードを次のように設定してテキストノードを変更しようとしていたことです。

msgComments 1 .value = "Hello Worlds!"; //マーカーが

はそれを動作させるために何が起こるか見るために、単純にこのような文字列値にinnerHTMLプロパティを設定します。

msgComment1.innerHTML =;「こんにちは世界!」 //これで動作します。

2番目の問題は、chrome.extension.sendRequestへの非同期呼び出しで、応答が受信されたときにinnerHTMLを更新するコールバックが必要であることです。私はこの点に関して質問を投稿しましたearlierと@sergによって前の投稿の解決策を見つけた後、自分自身で答えました。

関連する問題