Je veux afficher du texte en HTML par une fonction JavaScript. Comment puis-je échapper aux caractères spéciaux HTML en JavaScript ? Existe-t-il une API ?
Pourquoi "'" et non "'" ?
Je veux afficher du texte en HTML par une fonction JavaScript. Comment puis-je échapper aux caractères spéciaux HTML en JavaScript ? Existe-t-il une API ?
Je pense que les expressions régulières dans replace()
sont inutiles. De simples chaînes à un seul caractère feraient tout aussi bien l'affaire.
function escapeHtml(html){
var text = document.createTextNode(html);
var p = document.createElement('p');
p.appendChild(text);
return p.innerHTML;
}
// Escape while typing & print result
document.querySelector('input').addEventListener('input', e => {
console.clear();
console.log( escapeHtml(e.target.value) );
});
<input style='width:90%; padding:6px;' placeholder='<b>cool</b>'>
Vous pouvez utiliser l'outil de jQuery .text()
fonction .
Par exemple :
D'après la documentation de jQuery concernant le .text()
fonction :
Il faut savoir que cette méthode échappe la chaîne fournie comme nécessaire pour qu'elle soit rendue correctement en HTML. Pour ce faire, elle appelle la méthode DOM .createTextNode(), mais n'interprète pas la chaîne en tant que HTML.
Les versions précédentes de la documentation de jQuery le formulaient de cette façon ( accentuation ajoutée ) :
Il faut savoir que cette méthode échappe la chaîne fournie comme il se doit afin qu'elle soit rendue correctement en HTML. Pour ce faire, elle appelle la méthode DOM .createTextNode(), qui remplace les caractères spéciaux par leurs équivalents en entité HTML (comme < pour <).
Je pense avoir trouvé la bonne façon de faire...
// Create a DOM Text node:
var text_node = document.createTextNode(unescaped_text);
// Get the HTML element where you want to insert the text into:
var elem = document.getElementById('msg_span');
// Optional: clear its old contents
//elem.innerHTML = '';
// Append the text node into it:
elem.appendChild(text_node);
J'ai appris quelque chose de nouveau sur le HTML aujourd'hui. w3schools.com/jsref/met_document_createtextnode.asp .
Sachez que le contenu du nœud texte n'est pas échappé si vous essayez d'y accéder de cette manière : document.createTextNode("<script>alert('Attack!')</script>").textContent
C'est la bonne méthode si vous ne faites que mettre du texte. Il y a aussi textContent mais apparemment il n'est pas bien supporté. Cela ne fonctionnera pas cependant si vous construisez une chaîne de caractères avec certaines parties de texte et d'autres de html, alors vous devez toujours utiliser l'échappement.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
22 votes
Il ne s'agit pas d'un doublon, puisque cette question ne porte pas sur jQuery. Je ne suis intéressé que par celle-ci, puisque je n'utilise pas jQuery...
7 votes
Duplicata possible de L'équivalent de HtmlSpecialChars en Javascript ?