Pourquoi mentionner spécifiquement TextArea? Parce que le nœud TextArea est en fait très spécial. Parce que ce nœud est spécial, l'explication est différente dans IE et dans d'autres navigateurs.
Arrête de le vendre, haha! En fait, la raison principale est que j'ai aidé un frère senior à réparer un bug aujourd'hui. Plus précisément, il n'a pas réussi à extraire les données du serveur et à l'insérer dans TextArea. Cette situation ne se produit que dans IE. Tous les autres navigateurs sont normaux!
Tout d'abord, pourquoi TextArea est-elle spéciale? Dans tous les plugins de forme, la valeur de TextArea est écrite entre deux balises ouvertes et fermées, de sorte que sa valeur peut être considérée comme un nœud de texte du point de vue du DOM, qui est unique à TextArea. En raison de cette fonctionnalité, lorsque vous modifiez sa valeur intérieure, vous pouvez toujours modifier le texte de TextArea. Bien que IE prenne en charge le fait de le faire, cela ne permet pas une chose: insérez dynamiquement certaines balises HTML.
Vous pourriez aussi bien faire une expérience:
Insérez un morceau de code HTML via JS dans IE, en utilisant l'attribut innerHTML au lieu de la valeur ou du texte intérieur.
Je n'ai pas testé IE9 +, mais IE6, 7 et 8 rapporteront des erreurs.
C'est probablement pour des raisons de sécurité, donc JS n'est pas autorisé à insérer dynamiquement HTML dans TextArea, mais les gens prudents peuvent constater que si vous tapez le code HTML manuellement, TextArea est acceptable. Je pense que cela a réellement passé un processus comme ceci: l'évasion du personnage. Oui, c'est la seule raison pour laquelle le code HTML manuel réussit.
Donc, à mon avis, comme tant de textares de navigateur ne prennent pas en charge l'affichage HTML, pourquoi avez-vous toujours besoin d'utiliser l'attribut innerHTML lors de l'utilisation de JS? En d'autres termes, peu importe si vous insérez du code HTML avec de la valeur ou innerHTML avec du code HTML, il ne sera pas analysé et affiché (il y aura donc un éditeur de texte riche au lieu de TextArea). Alors pourquoi ne pas utiliser la valeur pour définir la valeur de TextArea?
Je pense donc que la définition de la valeur de TextArea ne devrait pas être via InnerHTML (bien sûr, il est encore plus impossible d'être innert-texte à cause de Firefox), mais devrait être définie par valeur. C'est quelque chose auquel les développeurs devraient prêter attention. Parce que j'ai récemment lu des codes de chaussures pour enfants qui aiment toujours utiliser InnerHTML. En fait, je pense que tout est une question d'occasions.