#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"));
});
}