Y a-t-il une façon HTML/CSS d'afficher les balises HTML sans Parser?

y a-t-il un moyen que je puisse afficher des balises HTML sans Parser? Les balises XMP fonctionnait avant parfaitement mais maintenant il est remplacé par PRE qui n'est pas si cool. Jetez un oeil à cet exemple:

//This used to NOT PARSE HTML even if you used standard < and >.
<XMP>
<a hred="http://example.com">Link</a>
</XMP>

//New PRE tag requires &lt; and &gt; as replacement for < and >.
<PRE>
<a href="http://example.com">Link</A>
</PRE>

ce que je cherche est l'équivalent de l'ancienne étiquette XMP. Nouvelle pré-étiquette pour analyser le code.

19
demandé sur Atadj 2012-07-26 20:38:26

8 réponses

Vous pouvez utiliser un script élément type définir pour indiquer le texte simple, et mettre son display propriété block. Cela n'affecte que le comportement d'analyse: aucun markup (balises ou références d'entité ou de caractère) n'est reconnu, sauf pour la balise finale de l'élément lui-même </script>. (Donc il n'est pas tout à fait de la même façon que xmp, où l'reconnu balise </xmp>.) Vous pouvez séparément rendre la manipulation de l'espace blanc similaire à celle de xmp et pre et / ou régler la police monospace comme dans les éléments par défaut.

Exemple:

<style>
    script {
        display: block;
    }
</style>

puis dans le corps du document:

<script type="text/plain">
    <i>&eacute;</i>
</script>

testé sur les nouvelles versions de IE, Chrome, Firefox, Opera. Cela n'a pas fonctionné dans L'émulation D'IE 8 et D'IE 7 sur IE 9, mais c'est probablement un bug dans l'émulation.

Cependant, je ne vois pas pourquoi vous voulez utiliser ce lieu de xmp, qui n'a pas cessé de travailler. Ce n'est pas dans les spécifications, mais si vous êtes inquiet à ce sujet, vous devriez avoir toujours été inquiet. Mentionné dans HTML 2.0 (la première spécification HTML jamais) comme évitable, il a été déprécié dans HTML 3.2 et complètement supprimé dans HTML 4.0 (il y a longtemps: en 1997).

xmp fait un retour plutôt que de mourir. Le W3C HTML5 (caractérisé comme la spécification HTML actuelle par la portée W3C) déclare xmp comme obsolète et non conforme, mais il impose également un condition sur les navigateurs: "les agents Utilisateurs doivent traiter xmp éléments d'une façon équivalente pre éléments en termes de sémantique et à des fins de rendu. (L'analyseur a cependant un comportement particulier pour cet élément.)" La vieille de l'analyse de comportement n'est donc pas explicitement requis, mais clairement implicite.

22
répondu Jukka K. Korpela 2017-11-02 18:54:39

Hey les gars, je pense personnellement utiliser le <code> </code> tags ne fonctionne qu'avec Dream Weaver et la balise <xmp> </xmp> n'a jamais cessé de travailler à moins que vous ne mettiez en </xmp> ça marche très bien. En utilisant <textarea> </textarea> fait en sorte que d'autres peuvent éditer votre code sur le site web ou la page donc je recommande que l'étiquette <xmp> </xmp> est toujours utilisé et que cette étiquette vit toujours dessus.

3
répondu Sean Cassiere 2012-09-16 10:25:31

Il n'y en a pas.

en théorie, vous pouvez utiliser un bloc CDATA, mais aucun navigateur ne supporte cela en mode texte / html.

utilisez des références de caractères.

1
répondu Quentin 2012-07-26 16:42:57

si vous voulez être plus complexe, une autre façon est de créer une étiquette personnalisée en utilisant jQuery. Pour cet exemple, j'ai utilisé <noparse>.

$('noparse').each(function(){
    if($(this).attr('tagchecked') != 'true'){ //checks if already changed tag
        $(this).text($(this).html()).attr('tagchecked', 'true'); //makes the html into plaintext
    }
});

JSFiddle ici

1
répondu tjhorner 2014-05-01 02:42:14

la façon moderne est d'utiliser textarea avec l'attribut (booléen) en lecture seule. Vous pouvez utiliser XMP, mais cela est déprécié, donc il peut éventuellement cesser d'être pris en charge.

exemple:

<textarea readonly='true'>
    <p>This is some text</p>
</textarea>
1
répondu user3133463 2016-09-20 14:56:18

je suggère d'utiliser le html balise iframe et de mettre le texte que vous souhaitez afficher dans l'attribut src. vous n'avez qu'à l'url ou à base64 l'encoder en premier.

example (urlencoded):
<iframe src="data:text/plain,%22%3Chello%3E%22"></iframe>

example (base64):
<iframe src="data:text/plain;base64,IjxoZWxsbz4i"></iframe>

Result displayed as:
"<hello>"
0
répondu Peter Korinek TellusTalk 2016-01-11 15:20:17

Techniquement, vous pouvez utiliser <textarea>, mais il faudrait qu'il n'y a pas </textarea> balise dans le code que vous essayez de montrer. Il avait juste plus facile d'échapper à l' <.

-1
répondu Niet the Dark Absol 2012-07-26 16:40:42

Eh bien, une façon serait d'utiliser jQuery. le jQuery .texte() méthode pour encoder les caractères spéciaux. Et le texte original non-encodé restera si vous voyez la source.

<div id="text">
    <a href="">This is an anchor</a>
</div>

<script>
    var t = $('#text'); t.html(t.text());
</script>
-1
répondu Erik Funkenbusch 2012-07-26 16:49:07