2016-12-22 7 views
1

Je souhaite afficher le texte avec des balises HTML.Valider dynamiquement le code HTML

J'ai le code suivant:

<pre th:id="'answer' + ${answerStat.index}"></pre> 
<script type="text/javascript" th:inline="javascript"> 
/*<![CDATA[*/ 

$("#answer" + [[${answerStat.index}]]).html([[${answer.value}]]); 

/*]]>*/ 
</script> 

Il fonctionne parfaitement, mais answer.value a été inputed par l'utilisateur plus tôt et il peut contenir des erreurs de syntaxe (comme balise non fermée). Et si answer.value contient l'erreur de syntaxe, cela conduit à une erreur. Donc, comment puis-je vérifier dynamiquement que answer.value n'a pas d'erreur de syntaxe? Merci, j'espère que vous m'aiderez.

+0

Il est difficile de dire exactement ce dont vous avez besoin. Les utilisateurs vont-ils entrer du HTML brut? Qu'en est-il des scripts? L'assainissement est-il important? Quels sont les caractères valides à accepter? Le HTML peut être écrit de plusieurs façons et vous ne serez pas capable d'évaluer 'html valide' sans quelques expressions regex compliquées. – rob

+0

Pourquoi laissez-vous l'utilisateur entrer du code HTML? –

+0

Parce que je fais un forum. –

Répondre

1

Vous pouvez utiliser une instruction try/catch.

La syntaxe est:

try{ 
    //code to be tried here 
} 
catch(e){ 
    //error handling here 
    //e is the error thrown by the try 
} 

Donc, si votre answer.value a une erreur, et il est dans une instruction try/catch, la déclaration catch se déroulera. Voir here pour plus de détails.