Bon,
Il se trouve que ça répondrai pas mal à un besoin. J'ai une fenêtre modale avec un texte à afficher. La fenêtre peut être appelée par plusieurs boutons sur la page ; lors du lancement de la modale, je récupère le bouton qui l'a appelée, et dans un attribut
J'avais pensé à assainir les données utilisateur avec un petit
Mais j'ai le sentiment que
Pour le moment j'envisage deux possibilités. Soit tout encoder deux fois genre avec
1) est-ce qu'il y a une manière plus intelligente de procéder ?
2) sur les deux possibilités que j'envisage y-en a-t-il une qui est meilleure que l'autre ?
3) pourquoi
.innerHTML
pour écrire des données dans le DOM c'est pas idéal, mais c'est quand même bien pratique. Mais avec des données utilisateurs, forcément, ça devient touchy.Il se trouve que ça répondrai pas mal à un besoin. J'ai une fenêtre modale avec un texte à afficher. La fenêtre peut être appelée par plusieurs boutons sur la page ; lors du lancement de la modale, je récupère le bouton qui l'a appelée, et dans un attribut
data-*
de celui-ci le texte à afficher. Le texte en question est légèrement mis en forme (en gros du texte mis en exergue avec <strong>
), mais mélangé à des données entrées par l'utilisateur.J'avais pensé à assainir les données utilisateur avec un petit
htmlspecialchars()
dans le style :
PHP:
echo 'data-texte="Nom : <strong>' . htmlspecialchars($donneeUtilisateur) . '</strong>"';
Mais j'ai le sentiment que
.innerHTML
"décode" les caractères spéciaux HTML, de sorte que ce que je projetais n'es pas suffisant.Pour le moment j'envisage deux possibilités. Soit tout encoder deux fois genre avec
htmlspecialchars(htmlspecialchars($donneeUtilisateur))
(ou une fonction qui le fait deux fois, mais vous comprenez l'idée), soit encoder les données utilisateurs, puis le tout dans le style :
PHP:
echo 'data-texte="' . htmlspecialchars('Nom : <strong>' . htmlspecialchars($donneeUtilisateur) . '</strong>') . '"';
1) est-ce qu'il y a une manière plus intelligente de procéder ?
2) sur les deux possibilités que j'envisage y-en a-t-il une qui est meilleure que l'autre ?
3) pourquoi
.innerHTML
interpète les caractères HTML ? ou qu'est-ce que je comprends mal ?