¿Cómo puedo mostrar fragmentos de HTML en una página web sin necesidad de reemplazar cada uno? <
con <
y >
con >
?
En otras palabras, ¿hay una etiqueta para no renderice HTML hasta que presione la etiqueta de cierre?
steven
¿Cómo puedo mostrar fragmentos de HTML en una página web sin necesidad de reemplazar cada uno? <
con <
y >
con >
?
En otras palabras, ¿hay una etiqueta para no renderice HTML hasta que presione la etiqueta de cierre?
El método probado y verdadero para HTML:
Sugerencia: para acelerar el reemplazo del código HTML, puede usar Notepad ++ con la extensión ‘TextFX’. Marque el texto, vaya al menú >TextFX >TextFX Convert >Codificar HTML (&<>“) → Listo.
– avatar
13 de enero de 2013 a las 18:07
¿Hay alguna biblioteca de JavaScript existente que pueda hacer esto, por casualidad?
–Anderson Green
12/04/2013 a las 22:42
Esto no responde a la pregunta, que decía “sin necesidad de reemplazar…”. Además, reemplazar “>” es innecesario.
– Jukka K. Korpela
24 de abril de 2014 a las 11:19
Y el orden también es importante. Asegúrate de manejar el &
primero y <
después.
– Tolga Evcimen
18 de junio de 2015 a las 5:34
@AndersonGreen Aquí está la biblioteca: export const escapeHtml = str => str.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>')
. Tal vez alguien debería crear un paquete NPM para él, como left-pad
? 😆
– Lionel Rowe
10 sep 2020 a las 20:01
Erfan Safarpoor
muestra 1:
<pre>
This text has
been formatted using
the HTML pre tag. The brower should
display all white space
as it was entered.
</pre>
muestra 2:
<pre>
<code>
My pre-formatted code
here.
</code>
</pre>
muestra 3: (Si en realidad está “citando” un bloque de código, entonces el marcado sería)
<blockquote>
<pre>
<code>
My pre-formatted "quoted" code here.
</code>
</pre>
</blockquote>
Los elementos utilizados en la respuesta no abordan la pregunta en absoluto: no afectan la interpretación de “<" al comienzo de una etiqueta.
– Jukka K. Korpela
24 de abril de 2014 a las 11:17
desarrollador.mozilla.org/en-US/docs/Web/HTML/Element/xmp dice, “No utilices este elemento.. Ha quedado en desuso desde HTML3.2 y no se implementó de manera coherente. Se eliminó por completo del lenguaje en HTML5″.
– Nick Arroz
1 de agosto de 2018 a las 8:40
Usé el CSS publicado, gracias, solucionó muchos problemas de diseño.
– Basheer AL-MOMANI
31 de agosto de 2020 a las 9:41
Konrad Rodolfo
hay una etiqueta para ¿No renderizas HTML hasta que presionas la etiqueta de cierre?
No, no hay. En HTML propiamente dicho, no hay forma de escapar de algunos caracteres:
&
como &
<
como <
(Por cierto, no hay necesidad de escapar >
pero la gente a menudo lo hace por razones de simetría.)
Y, por supuesto, debe rodear el código HTML escapado resultante dentro <pre><code>…</code></pre>
para (a) preservar los espacios en blanco y los saltos de línea, y (b) marcarlo como un elemento de código.
Todas las demás soluciones, como envolver su código en un <textarea>
o el (obsoleto) <xmp>
elemento, romperá.1
XHTML que se declara al navegador como XML (a través de HTTP Content-Type
¡encabezamiento! simplemente estableciendo un DOCTYPE
es no es suficiente) podría usar alternativamente una sección CDATA:
<![CDATA[Your <code> here]]>
Pero esto solo funciona en XML, no en HTML, e incluso esta no es una solución infalible, ya que el código no debe contener el delimitador de cierre. ]]>
. Entonces, incluso en XML, la solución más simple y robusta es escapar.
1 Caso en punto:
textarea {border: none; width: 100%;}
<textarea readonly="readonly">
<p>Computer <textarea>says</textarea> <span>no.</span>
</textarea>
<xmp>
Computer <xmp>says</xmp> <span>no.</span>
</xmp>
Lindo. Entonces, ¿eso es parte del estándar HTML? ¿O es más profundo, como parte del estándar xml?
– aioobe
12 mayo 2010 a las 15:50
En HTML, esto representará ` here]]>`
– Delfín
12 de mayo de 2010 a las 16:03
Sí, esta es una buena respuesta, pero no olvides reemplazar >
con >
– Alan
28 de julio de 2016 a las 13:13
@Alan Yo también haría esto, pero en realidad no es necesario: solamente <
y &
necesita ser reemplazado, sin escape >
es válido dentro de HTML.
– Konrad Rodolfo
28 de julio de 2016 a las 13:25
@SamWatkins Pero tu solución no es mas facil que el mio. acabas de cambiar qué hay que escapar, y tu solución es hacky, como admites. Literalmente no hay ninguna ventaja sobre hacerlo correctamente. Este es un problema resuelto con una solución correcta. No hay necesidad de piratear, a menos que toda su configuración sea pirateada.
– Konrad Rodolfo
3 de junio de 2020 a las 8:28
Krunal
Una especie de método ingenuo para mostrar el código lo incluirá en un área de texto y agregará un atributo deshabilitado para que no sea editable.
<textarea disabled> code </textarea>
Espero que ayude a alguien que busca una manera fácil de hacer las cosas.
s_hewitt
Obsoletopero funciona en FF3 e IE8.
<xmp>
<b>bold</b><ul><li>list item</li></ul>
</xmp>
Recomendado:
<pre><code>
code here, escape it yourself.
</code></pre>
barnameha
solía <xmp>
como esto:
http://jsfiddle.net/barnameha/hF985/1/
eric leschinski
el obsoleto <xmp>
La etiqueta esencialmente hace eso, pero ya no es parte de la especificación XHTML. Sin embargo, aún debería funcionar en todos los navegadores actuales.
Aquí hay otra idea, un truco de hack/parlor, podrías poner el código en un área de texto así:
<textarea disabled="true" style="border: none;background-color:white;">
<p>test</p>
</textarea>
Poner corchetes angulares y código como este dentro de un área de texto es HTML no válido y causará un comportamiento indefinido en diferentes navegadores. En Internet Explorer se interpreta el HTML, mientras que Mozilla, Chrome y Safari lo dejan sin interpretar.
Si desea que no sea editable y se vea diferente, puede diseñarlo fácilmente con CSS. El único problema sería que los navegadores agregarán ese pequeño controlador de arrastre en la esquina inferior derecha para cambiar el tamaño del cuadro. O alternativamente, intente usar una etiqueta de entrada en su lugar.
La forma correcta de inyectar código en su área de texto es usar un lenguaje del lado del servidor como este PHP, por ejemplo:
<textarea disabled="true" style="border: none;background-color:white;">
<?php echo '<p>test</p>'; ?>
</textarea>
Luego omite el intérprete html y coloca el texto no interpretado en el área de texto de manera consistente en todos los navegadores.
Aparte de eso, la única forma es realmente escapar del código usted mismo si es HTML estático o usar métodos del lado del servidor como HtmlEncode() de .NET si usa dicha tecnología.
esta es una idea horrible. ¿Qué pasa si se muestra HTML dinámico y alguien hizo lo siguiente?
– Gary Drocella
18 de agosto de 2014 a las 23:01
PHP es del lado del servidor, por lo que no cambia el resultado visto por el navegador. Especialmente no pasa por alto el intérprete de HTML.
– Roberto Siemer
7 de enero de 2017 a las 14:54
Me gusta el formato del área de texto para que no parezca un cuadro de entrada. También agrego ancho 100% para reducir el envoltorio: <textarea disabled="true" style="border: none;background-color:white; width:100%">
– Dan Rey
12/01/2018 a las 22:40
@GaryDrocella si inserta etiquetas