Maison > Article > interface Web > Erreur Vue : v-html ne peut pas être utilisé correctement pour restituer du code HTML dynamique. Comment le résoudre ?
Erreur Vue : v-html ne peut pas être utilisé correctement pour restituer du code HTML dynamique, comment le résoudre ?
Introduction :
Dans le développement de Vue, nous avons souvent besoin de restituer dynamiquement du code HTML pour afficher du contenu textuel riche ou des entrées utilisateur générées dynamiquement. Vue fournit la directive v-html pour implémenter cette fonction. Cependant, nous pouvons parfois rencontrer des problèmes qui ne permettent pas de restituer correctement le code HTML dynamique à l'aide de v-html. Cet article explorera les causes de ce problème et proposera des solutions.
Description du problème :
Dans Vue, lorsque nous utilisons la directive v-html pour restituer du code HTML dynamique, nous pouvons rencontrer le message d'erreur suivant :
[vue/valid-v-html] Unexpected control-character
Ce message d'erreur indique que notre code HTML dynamique contient des caractères de contrôle illégaux, provoquant le rendu échec.
Analyse du problème :
La raison de ce message d'erreur est que Vue échappera par défaut aux codes HTML dynamiques pour empêcher les attaques de scripts intersites (XSS). Cependant, lorsque nous sommes sûrs que le code HTML dynamique est sûr et que nous devons le rendre tel quel, nous devons utiliser la directive v-html. Cependant, comme Vue échappe aux codes HTML, les codes HTML contenant des caractères spéciaux (tels que "", etc.) ne peuvent pas être rendus correctement.
Solution :
La solution à ce problème est simple, il nous suffit d'analyser et de restituer manuellement le code HTML. Voici un exemple qui montre comment utiliser correctement v-html pour restituer du code HTML dynamique :
Tout d'abord, définissez une méthode dans le composant Vue pour analyser le code HTML et renvoyer un résultat rendu :
methods: { parseHTML(html) { const doc = new DOMParser().parseFromString(html, 'text/html'); return doc.body.innerHTML; } }
Ensuite, dans le modèle Render code HTML dynamique en appelant cette méthode :
<template> <div v-html="parseHTML(dynamicHTML)"></div> </template>
Cela peut résoudre le problème selon lequel v-html ne peut pas restituer correctement le code HTML dynamique.
Exemple de code :
Voici un exemple complet montrant comment utiliser v-html pour rendre du code HTML dynamique :
<template> <div v-html="parseHTML(dynamicHTML)"></div> </template> <script> export default { data() { return { dynamicHTML: '<p>这是一段动态渲染的HTML代码</p>' }; }, methods: { parseHTML(html) { const doc = new DOMParser().parseFromString(html, 'text/html'); return doc.body.innerHTML; } } }; </script>
Résumé :
Dans Vue, si vous rencontrez le problème de ne pas pouvoir utiliser correctement v-html pour le rendu code HTML dynamique, nous pouvons le résoudre en analysant manuellement le code HTML et en le rendant. Définissez simplement une méthode pour analyser le code HTML et appelez cette méthode dans le modèle. Avec cette approche, nous pouvons garantir que le code HTML dynamique est rendu correctement tout en garantissant la sécurité.
J'espère que cet article vous aidera à résoudre le problème de l'erreur Vue : Impossible d'utiliser correctement v-html pour restituer du code HTML dynamique !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!