2011-10-14 11 views
12

Tengo un editor de html simple. Digamos que los tipos de usuario siguientes:Impedir que jQuery escape entidades html

<p>Ok, this just &amp; sucks :) &ndash;</p> 

y se guarda en una variable:

var content = "<p>Ok, this just &amp; sucks :) &ndash;</p>"; 

Ahora, en algún lugar estoy usando jQuery para añadir este texto a algún elemento:

$(this).html(content); // where content is the string above 

El problema es que se escapó:

<p>Ok, this just &amp;amp; sucks :) &amp;ndash;</p> 

¿Cómo puedo lograr tener la cadena exacta con & amp; y & ndash; y también para tener < y no & lt; porque necesito etiquetas html?

Edit: Más información Agregado

Respuesta

9

El problema no es que jQuery está escapando de las entidades. Creo que si usas console.log para escribir la cadena content, verás que tu editor te devuelve las entidades escapadas.

El objetivo de .html() contra .text() es que .html() es para HTML que se tratará como HTML.

+3

Gracias por la respuesta. Bueno, sí, el "contenido" ya se ha escapado (contiene el mismo texto que el primer código anterior), pero jQuery lo vuelve a escapar y así el '& ; ndash; ' es creado. – ladar

1

supongo que desea tener el texto <p>Ok, this just &amp;amp; sucks :) &amp;ndash;</p> que se muestra exactamente con a la conversión de ellos, por lo que el &amp; y ndash; no se convertirá en & y -, a continuación, utilizar:

$(this).text(content); 

Uno de los problemas con esto es que el content se agregará como un texto en el sitio el elemento this. Será no crear un elemento p y anexarlo al this.

Pero si desea tomar el efecto de la conversión, entonces el código debería funcionar.

Una cosa más que quiero mencionar, Creo que el lenguaje no es el único relacionado con esas conversiones. El navegador toma el rol principal en esos casos. SO, lo que hagamos en el script si el navegador tiene otra oportunidad de verificar los contenidos, los convertirá en & y -.

Cuestiones relacionadas