Escape HTML com Javascript

Fonte

Essa é uma maneira bastante padrão de fazer isso, minha versão usava um <div>pensamento:

return $('<div/>').text(t).html();

Isso não é tecnicamente 100% seguro, como observa Mike Samuel, mas provavelmente é bastante seguro na prática.

O Prototype.js atual faz isso:

function escapeHTML() {
return this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');
}

Mas costumava usar o truque “coloque texto em uma div e extraia o HTML”.

Também há _.escapeem Underscore , que faz assim:

// List of HTML entities for escaping.
var htmlEscapes = {
'&': '&amp;',
'<': '&lt;',
'>': '&gt;',
'"': '&quot;',
"'": '&#x27;',
'/': '&#x2F;'
};

// Regex containing the keys listed immediately above.
var htmlEscaper = /[&<>"'/]/g;

// Escape a string for HTML interpolation.
_
.escape = function(string) {
return ('' + string).replace(htmlEscaper, function(match) {
return htmlEscapes[match];
});
};

Essa é praticamente a mesma abordagem do Prototype. A maior parte do JavaScript que faço ultimamente tem Underscore disponível, então tendo a usar _.escapehoje em dia.