Как получить HTML-код объекта в App Lab?

#javascript #app-lab

Вопрос:

Я использую Code.org Лаборатория приложений для создания комнаты чата, и сообщения чата отображаются с помощью функции innerHTML ().

Однако, похоже, нет способа получить внутренний HTML-код объекта.

Я попытался присвоить HTML переменной, например html , и при html обновлении также обновляется внутренний HTML-код области чата:

 var html;
onRecordEvent("Messages", {}, function (rec) {
  html = html   "<div style='background: white; border-radius: 5px; padding: 10px'><div><b>"   rec.username   "</b></div><div>"   rec.message   "</div></div>";
  innerHTML("chatArea", html);
});
 

Однако для этого требуется, чтобы область чата сначала была пуста, иначе она будет опустошена при первом html редактировании.

Есть ли какой-либо способ получить innerHTML объекта, так document как он отключен?

Ответ №1:

Единственный способ, которым я мог видеть, как это делается, — это использовать tampermonkey или какой-либо скрипт, чтобы извлечь его из фактического источника.

Я тоже ничего не видел при получении html, так что мне очень жаль. Также вы можете просто отправлять сообщения в текстовую область без html.

Немного сбившись с пути, вы можете создавать запись каждый раз, когда отправляется новый чат, а затем очень часто просматривать записи чата, чтобы узнать, какие новые чаты следует добавлять. Это небольшой фрагмент кода, который я всегда использую для своих экранов чата в играх Dungeon Destiny.

 //chat info
go("goChat", "warnChat");
go("acceptWarn", "chatt");
go("backChat", "home");
 

sayCS('home', 'announcements');
sayCS('warnChat', 'warnTxt');
sayCS('tosLog', 'tosLogTxt');
sayCS('tos', 'tosTxt');

function sayCS(scr, text){
  onEvent(scr, "keydown", function(event){
    if(event.key=='Alt'){
      playSpeech(getText(text), "female", "English (UK)");
    }
  });
}

onEvent("chatt", "keydown", function(event){
  if(event.key=="Enter"){
    if (getText("setMessage")==''||null) {
      setProperty("setMessage", "placeholder", "Please Type Something Before You Send It");
      setTimeout(function() {
        setProperty("setMessage", "placeholder", "Type A Message Here");
      }, 2000);
    } else if(getText("setMessage")!=''||null) {
        if(username != '' ||null){
          createRecord("chat", {from: username, message:(getText("setMessage"))}, function(){});
        } else if(username == '' ||null){
            createRecord("chat", {from: username, message:(getText("setMessage"))}, function(){});
        }
    }
    setText("setMessage", "");
  }
});

var messages;
function setChat() {
  messages=[];
  readRecords("chat", {}, function(records) {
    for (var i =0; i < records.length; i  ) {
      if(!records[i].message.includes("fuck")){
        appendItem(messages,(records[i]).from  ": " (records[i]).message);
      }
      }
    messages.reverse();
    setText("chat", messages.join("n"));
  });
}