Установить HTML-содержимое с обернутым элементом span, где вы можете конвертировать текст, используя временный элемент.
const escape = txt => $('<div/>').text(txt).html()
$("<li>", {
class: "list-group-item",
html: '<span style="font-weight:bold">' + escape(obj.username) + "</span>: " + escape(obj.message)
}).prependTo('#chatlog');
const obj = {
username: 'John Doe',
message: 'Hi!<script>djsjdk<\/script>'
};
const escape = txt => $('<div/>').text(txt).html();
console.log(escape(obj.message));
$("<li>", {
class: "list-group-item",
html: '<span style="font-weight:bold">' + escape(obj.username) + "</span>: " + escape(obj.message)
}).prependTo('#chatlog');
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul id="chatlog"></ul>
Или же вы можете создать диапазон, используя jQuery, и для сообщения создать текстовый узел.
$("<li>", {
class: "list-group-item",
html: [
$('<span>', {
css: {
fontWeight: 'bold'
},
text: obj.username
}),
document.createTextNode(': ' + obj.message)
]
}).prependTo('#chatlog');
const obj = {
username: 'John Doe',
message: 'Hi!<script>djsjdk<\/script>'
};
$("<li>", {
class: "list-group-item",
html: [
$('<span>', {
css: {
fontWeight: 'bold'
},
text: obj.username
}),
document.createTextNode(': ' + obj.message)
]
}).prependTo('#chatlog');
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul id="chatlog"></ul>