измененный innerHTML не отображается на странице - PullRequest
0 голосов
/ 26 июля 2011

Я пишу расширение 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 Ответ

1 голос
/ 31 июля 2011

(отвечая на мой собственный вопрос). Эта проблема действительно состоит из двух частей. Самая простая часть заключается в том, что я пытался изменить текстовый узел, установив его значение следующим образом:

msgComments 1 .value = "Hello Worlds!"; // маркер, чтобы увидеть, что происходит

Чтобы это работало, просто установите innerHTML в строковое значение, например:

msgComment1.innerHTML = "Hello Worlds!"; // теперь это работает.

Вторая часть проблемы заключается в том, что асинхронный вызов chrome.extension.sendRequest требует обратного вызова для обновления innerHTML при получении ответа. Я опубликовал вопрос на этот счет ранее и сам ответил на него после поиска решения в предыдущем посте @ serg.

...