Я рассматриваю этот пример сигналаR по адресу: https://docs.microsoft.com/en-us/aspnet/core/tutorials/signalr?view=aspnetcore-3.1&tabs=visual-studio.
Все работает, когда кнопка «Отправить» отправляет пользователя и сообщение на серверный концентратор чата signalR. Затем концентратор отправляет пользователю и сообщение обратно всем клиентам функцию обратного вызова «ReceiveMessage» для объекта подключения концентратора в Javascript. У меня есть куча операторов console.log, показывающих, что пользователь и сообщение сделаны на сервере и обратно.
Но есть эта закодированная переменная сообщения, которую вы назначаете элементу li, который добавляется обратно к элементу в DOM.
Но в Javascript, если я пытаюсь назначить encodedMsg для li, выполнение просто останавливается. Если я присваиваю stati c значение 'Hello', он продолжает работу и работает.
Это обратный вызов signalR "ReceiveMessages":
connection.on("ReceiveMessage", function (user, message) {
console.log("In client side: ReceiveMessage");
console.log(`user: ${user}`);
console.log(`message: ${message}`);
var msg = message.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
console.log(`msg: ${msg}`);
var encodeMsg = user + " says " + msg;
console.log(`encodeMsg: ${encodeMsg}`);
var li = document.createElement("li");
console.log(`li: ${li}`);
li.textContent = 'Hello'; //encodedMsg;
console.log(`li.textContent: ${li.textContent}`);
document.getElementById("messagesList").appendChild(li);
});
Здесь li.textContent получает значение :
Но если я попытаюсь добавить фактическое закодированное сообщение, оно просто остановит выполнение:
connection.on("ReceiveMessage", function (user, message) {
console.log("In client side: ReceiveMessage");
console.log(`user: ${user}`);
console.log(`message: ${message}`);
var msg = message.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
console.log(`msg: ${msg}`);
var encodeMsg = user + " says " + msg;
console.log(`encodeMsg: ${encodeMsg}`);
var li = document.createElement("li");
console.log(`li: ${li}`);
/*li.textContent = 'Hello'; //encodedMsg; */
li.textContent = encodedMsg;
console.log(`li.textContent: ${li.textContent}`);
document.getElementById("messagesList").appendChild(li);
});
Я не очень хорош в JavaScript. Кто-нибудь видит, почему он не хочет назначать динамическое c encodedMsg var для li textContent?