¿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 renderizar HTML hasta que presione 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 las personas a menudo lo hacen por razones de simetría).
Y, por supuesto, debe rodear el código HTML resultante escapado <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 elemento <textarea>
o (en desuso) <xmp>
, se romperán . 1
XHTML que se declara al navegador como XML (a través del Content-Type
encabezado HTTP ; simplemente establecer un noDOCTYPE
es suficiente ) alternativamente podría usar 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 a través del escape.
1 Caso en cuestión:
>
con>
<
y&
necesita ser reemplazado, sin escapes>
es válido dentro de HTML.El método probado y verdadero para HTML:
&
personaje con&
<
personaje con<
>
personaje con>
<pre>
y / o<code>
etiquetas.fuente
&
primero y<
después.mejor manera:
muestras antiguas:
muestra 1 :
muestra 2 :
muestra 3 : (Si en realidad está "citando" un bloque de código, entonces el marcado sería)
buena muestra de CSS:
Código de resaltado de sintaxis (para trabajo profesional):
arcoiris (muy perfecto)
embellecer
sintaxis
realce
JS Highlighter
mejores enlaces para ti:
http://net.tutsplus.com/tutorials/html-css-techniques/quick-tip-how-to-add-syntax-highlighting-to-any-project/
https://github.com/balupton/jquery-syntaxhighlighter
http://bavotasan.com/2009/how-to-wrap-text-within-the-pre-tag-using-css/
http://alexgorbatchev.com/SyntaxHighlighter/
https://code.google.com/p/jquery-chili-js/
¿Cómo resaltar el código fuente en HTML?
fuente
Un tipo 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.
Espero que ayude a alguien que busca una manera fácil de hacer las cosas.
fuente
En desuso , pero funciona en FF3 e IE8.
Recomendado:
fuente
Utilicé
<xmp>
así: http://jsfiddle.net/barnameha/hF985/1/fuente
El desaprobado
<xmp>
etiqueta en esencialmente hace eso, pero ya no es parte de la especificación XHTML. Sin embargo, debería funcionar en todos los navegadores actuales.Aquí hay otra idea, un truco de hack / salón, podría poner el código en un área de texto de esta manera:
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 quieres que no sea editable y se vea diferente, entonces puedes diseñarlo fácilmente usando 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 bien, 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:
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 está usando HTML estático o usando métodos del lado del servidor como .NET's HtmlEncode () si usa dicha tecnología.
fuente
<textarea disabled="true" style="border: none;background-color:white; width:100%">
En HTML? No.
En XML / XHTML? Podrías usar un
CDATA
bloque.fuente
Es muy simple ... Use este código xmp
fuente
Asumo:
<
no debería necesitar escaparTodas tus opciones están en este árbol:
<p>
)<
"
y&thing;
necesitan escapar:"
y&thing;
respectivamente<script>
y<style>
solo</script
no está permitido en ningún lugar de<script>
<textarea>
y<title>
solo<textarea>
es un buen candidato para envolver código</html>
allí</textarea
por razones obvias</textarea
o similar&thing;
necesita escapar:&thing;
Nota:
>
nunca necesita escapar. Ni siquiera en elementos normales.fuente
<script>
y<style>
se pueden hacer patentes simplemente ponerlos dentro de la<body>
constyle="display: block; white-space: pre;"
ytype="text/html"
o algo si no quiere que sea ejecutado como JavaScript. Es un buen truco, creo, bueno para la programación y la enseñanza alfabetizadas. También<xmp>
todavía se implementa en los principales navegadores, aunque está en desuso.<xmp>
no es HTML5 válido, ¡pero tu otro truco parece correcto!Si su objetivo es mostrar un fragmento de código que está ejecutando en otra parte de la misma página, puede usar textContent (es pure-js y está bien soportado: http://caniuse.com/#feat=textcontent )
Para obtener el formato de varias líneas en el resultado, debe establecer el estilo css "white-space: pre;" en el div de destino y escriba las líneas individualmente con "\ r \ n" al final de cada una.
Aquí hay una demostración: https://jsfiddle.net/wphps3od/
Este método tiene una ventaja sobre el uso de textarea: el código no se formateará como lo haría en un textarea. (Cosas como
se eliminan por completo en un área de texto)fuente
<template>
o algo que normalmente no se representa.En definitiva, la mejor respuesta (aunque molesta) es "escapar del texto".
Sin embargo, hay muchos editores de texto, o incluso mini utilidades independientes, que pueden hacer esto automáticamente. Por lo tanto, nunca debería tener que escapar manualmente si no lo desea (a menos que sea una combinación de código escapado y no escapado ...)
La búsqueda rápida en Google me muestra este, por ejemplo: http://malektips.com/zzee-text-utility-html-escape-regular-expression.html
fuente
funciona bien para mi ..
"teniendo en cuenta la
Alexander's
sugerencia, aquí es por qué creo que este es un buen enfoque"Si lo intentamos de manera simple
<textarea>
, puede que no siempre funcione, ya que puede habertextarea
etiquetas de cierre que pueden cerrar incorrectamente la etiqueta principal y mostrar el resto de la fuente HTML en el documento principal, lo que sería incómodo.el uso
htmlentities
convierte todos los caracteres aplicables, como< >
entidades HTML, lo que elimina cualquier posibilidad de fugas.Puede haber beneficios o deficiencias en este enfoque o una mejor manera de lograr los mismos resultados, si es así, comente ya que me encantaría aprender de ellos :)
fuente
Puede usar un lenguaje del lado del servidor como PHP para insertar texto sin formato:
luego
$str
descargue el valor de htmlencoded:fuente
Este es un truco simple y lo he probado en Safari y Firefox
Se mostrará así:
Puedes verlo en vivo aquí
fuente
En realidad no es una manera de hacer esto. Tiene limitación (una), pero es 100% estándar, no está en desuso (como xmp), y funciona.
Y es trivial. Aquí está:
Por favor déjame explicarte. En primer lugar, el comentario HTML normal hace el trabajo, para evitar que se interprete todo el bloque. Puede agregar fácilmente cualquier etiqueta, todas serán ignoradas. Ignorado por la interpretación, pero aún disponible a través de
innerHTML
! Entonces, lo que queda es obtener el contenido y filtrar los tokens de comentarios anteriores y finales.Excepto (recuerde, la limitación) no puede poner comentarios HTML dentro, ya que (al menos en mi Chrome) no se admite el anidamiento de ellos, y primero '->' finalizará el programa.
Bueno, es una pequeña limitación desagradable, pero en ciertos casos no es un problema en absoluto, si su texto está libre de comentarios HTML. Y, es más fácil escapar de una construcción, luego un montón de ellas.
Ahora, ¿qué es esa
LlNnlljn77fggggkk77csJJK8bbJBKJBkjjjjbbbJJLJLLJo
cuerda extraña ? Es una cadena aleatoria, como un hash, que es poco probable que se use en el bloque, ¿y para qué? Aquí está el contexto, por qué lo he usado. En mi caso, tomé el contenido de un DIV, luego lo procesé con Showdown Markdown y luego la salida asignada a otro div. La idea era escribir un descuento en línea en el archivo HTML, y simplemente abrirlo en un navegador y se transformaría sobre la marcha sobre la marcha. Entonces, en mi caso,<!--
se transformó en<p><!--</p>
, el comentario escapó correctamente. Funcionó, pero contaminó la pantalla. Entonces, para eliminarlo fácilmente con regex, se usó la cadena aleatoria. Aquí está el código:Y funciona.
Si alguien está interesado, este artículo está escrito usando esta técnica. Siéntase libre de descargar y mire dentro del archivo HTML.
Depende de para qué lo estés usando. ¿Es entrada del usuario? Luego usa
<textarea>
y escapa de todo. En mi caso, y probablemente también sea tu caso, simplemente usé comentarios y hace el trabajo.Si no usa Markdown, y solo quiere obtenerlo como es de una etiqueta, entonces es aún más simple:
y código JavaScript para obtenerlo:
fuente
Hay algunas formas de escapar de todo en HTML, ninguna de ellas agradable.
O podría poner un
iframe
archivo que cargue un archivo de texto simple y antiguo.fuente
Este es, con mucho, el mejor método para la mayoría de las situaciones:
Hubiera votado a la primera persona que lo sugirió, pero no tengo reputación. Sin embargo, me sentí obligado a decir algo por el bien de las personas que intentan encontrar respuestas en Internet.
fuente
Así es como lo hice:
fuente
devolverá el HTML escapado
fuente
Tu podrías intentar:
fuente
Es posible que no funcione en todas las situaciones, pero colocar fragmentos de código dentro de un
textarea
los mostrará como código.Puede diseñar el área de texto con CSS si no desea que se vea como un área de texto real.
fuente
Es un truco, pero podemos usar algo como:
Con ese CSS, el navegador mostrará scripts dentro del cuerpo. No intentará ejecutar este script, ya que tiene un tipo desconocido
text/html
. No es necesario escapar de caracteres especiales dentro de un<script>
, a menos que desee incluir un cierre</script>
etiqueta de .Estoy usando algo como esto para mostrar JavaScript ejecutable en el cuerpo de la página, para una especie de "programación alfabetizada".
Hay más información en esta pregunta ¿ Cuándo deberían estar visibles las etiquetas y por qué pueden hacerlo? .
fuente
fuente
Una combinación de un par de respuestas que funcionan juntas aquí:
fuente