C'est un assez standard façon de le faire, ma version utilisé un <div>
bien que:
return $('<div/>').text(t).html();
Ce n'est pas techniquement sûre à 100% mais comme Mike Samuel notes, mais il est probablement assez sûr dans la pratique.
L'actuel Prototype.js fait ceci:
function escapeHTML() {
return this.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>');
}
Mais il l'habitude d'utiliser la fonction "insérer du texte dans un div et d'en extraire le code HTML" truc.
Il y a aussi _.escape
de Souligner, qu'elle a fait comme ceci:
// List of HTML entities for escaping.
var htmlEscapes = {
'&': '&',
'<': '<',
'>': '>',
'"': '"',
"'": ''',
'/': '/'
};
// 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];
});
};
C'est à peu près la même approche que celle du Prototype. La plupart du JavaScript je ne dernièrement a trait de Soulignement de disponible, donc j'ai tendance à utiliser _.escape
ces jours-ci.