`& mdash;` o `& # 8212;` ¿hay alguna diferencia en la salida HTML?


79

— o —

¿Hay alguna diferencia entre estos? ¿Está uno mejor apoyado que el otro?


7
Solo para completar: el carácter de guión largo real ("mdash") es: - y debe ser tan ancho como el carácter "m"
Simon B.

6
sí, una M mayúscula
Ray Tayek

Respuestas:


85

Los analizadores SGML (o analizadores XML en el caso de XHTML) pueden manejar —sin tener que procesar el DTD (lo que no importa a los navegadores, ya que solo sorben sopa de etiquetas), mientras que —es más fácil para los humanos leer y escribir en el código fuente.

Personalmente, me apegaría a un em-dash literal y me aseguraría de que la configuración de codificación de mis caracteres fuera consistente.


13

Son exactamente el mismo personaje. Ver: http://en.wikipedia.org/wiki/Dash

Salvo errores del navegador, mostrarán lo mismo en todos los casos, por lo que la única diferencia sería la legibilidad del código, que apuntaría a —.

O, si está utilizando UTF-8 como un juego de caracteres en su documento HTML, puede ingresar el carácter directamente. Eso también mostraría exactamente lo mismo.


5
Tenga en cuenta que esto solo es cierto para HTML, en XML, &8212;siempre funciona mientras que —depende de haber declarado la entidad.
Flimm

10

—:: —::\u2014

Al representar el guión m en una cadena de texto JavaScript para la salida a HTML, tenga en cuenta que estará representado por su valor Unicode. Hay casos en los que los caracteres ampersand ('&') no se resolverán, en particular, ciertos contextos dentro de JSX. En este caso, ni —ni —funcionará. En su lugar es necesario utilizar la secuencia de escape Unicode: \u2014.

Por ejemplo, al implementar un render()método para generar texto desde una variable de JavaScript:

render() {
   let text='JSX transcoders will preserve the & character—to ' 
            + 'protect from possible script hacking and cross-site hacks.'
   return (
     <div>{text}</div>
   )
}

Esto dará como resultado:

<div>JSX transcoders will preserve the & character&mdash;to protect from possible script hacking and cross-site hacks.</div>

En lugar de la &representación con prefijo, debes usar \ u2014:

let text='JSX transcoders will preserve the & character\u2014to …'

1
Funciona muy bien con React.
Verde

2

Del sitio web de W3 Entidades HTML comunes utilizadas para la tipografía

En aras de la portabilidad, las referencias a entidades Unicode deben reservarse para su uso en documentos que seguramente estarán escritos en juegos de caracteres UTF-8 o UTF-16. En todos los demás casos, deben utilizarse las referencias alfanuméricas.

Traducción: si está buscando un soporte más amplio, vaya con &mdash;


1

Podría ser que usar el código numérico sea más universal, ya que es una referencia directa a un carácter en la tabla de entidad html, pero supongo que ambos funcionan en todas partes. La primera notación es mucho más fácil de recordar para muchos personajes.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.