修改后的innerHTML不会显示在页面上

时间:2011-07-26 05:17:40

标签: google-chrome-extension innerhtml

我正在撰写Google扩展程序。在这里,我的内容脚本根据从后台请求的关键字列表修改页面。但是新的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();
};

我必须做什么才能使修改后的文本区域显示在选项卡中?

1 个答案:

答案 0 :(得分:1)

(回答我自己的问题)这个问题确实有两个部分。最简单的部分是我试图通过设置它的值来修改文本节点:

msgComments 1。value =“Hello Worlds!”; //标记,看看会发生什么

要使其工作,只需将innerHTML设置为如下字符串值:

msgComment1.innerHTML =“Hello Worlds!”; //现在它可以工作。

问题的第二部分是对chrome.extension.sendRequest的异步调用需要回调来在收到回复时更新innerHTML。我在这方面发布了一个问题earlier并在@serg上一篇文章中找到解决方案之后自己回答了问题。