2011-09-21 14 views
2

La zone de texte d'un navigateur ne doit-elle pas afficher du texte brut? Regardez les suivants de boutons-pression this post et attention à l'étiquette <script>:Pourquoi <textarea> affiche <> au lieu de < >?

1- On peut voir les supports coudés autour du mot de script:

We can see the angled brackets around the script word

2- Regardez maintenant la source de la page. On peut voir les supports coudés sont représentés par leurs entités HTML:

We can see the angled brackets are represented by their HTML entities

3- Cliquez pour modifier le message et vous verrez que les supports coudés sont visibles dans la zone de texte - pas leurs entités HTML:

We can see the angled brackets are visible in the textarea--NOT their HTML entities

4- Regardez la réponse XHR du serveur (lorsque nous avons cliqué modifier), nous pouvons voir les entités HTML et pas les crochets d'angle que nous voyons dans la zone de texte:

We can see the HTML entities and NOT the angled brackets we see in the textarea

Comment est-il possible que la zone de texte - lors de l'édition de la publication - affiche les parenthèses angulaires et non leurs entités HTML? Les textareas ne devraient-elles pas afficher du texte brut? J'ai essayé ceci sur mon site, et la zone de texte montre les entités HTML, et pas les parenthèses, avec le code source identique.

La page de publication affiche également les crochets angulaires, même s'ils se trouvent à l'intérieur des étiquettes code et pre. Ne devraient-ils pas être sortis en tant que texte brut aussi? J'ai également essayé ceci sur mon site, et la page montre les entités de HTML, et pas les parenthèses inclinées.

Qu'est-ce qui me manque ici?

Je demande parce que luttant avec l'implémentation d'une fonctionnalité sur mon site. Je veux montrer aux gens les entités encodées quand ils vont éditer quelque chose, mais je veux stocker une version brute. SO semble avoir fait, mais je ne sais pas comment.

Répondre

4

Voir Character Data and Markup et considérez CDATA sections en HTML (jetez un coup d'œil au DTD mais notez qu'il est insuffisant de décrire entièrement HTML).

Les script (et style) éléments ont une telle désignation CDATA tandis que textarea ne le fait pas. Stocker les données comme il ("unescaped") mais assurez-vous de coder en HTML en dehors des sections CDATA dans le HTML (et même à l'intérieur, prendre soin de se prémunir contre les terminateurs comme </anything - les caractères < et / doivent être séparés pour être entièrement légal en HTML). Voir CDATA vs PCDATA pour plus de détails.

Bonne codification.

Questions connexes