2010-09-20 34 views
137

Estoy tratando de usar una cadena que contiene comillas dobles en el atributo de título de un ancla. Hasta ahora he probado todas estas:Cómo escapar comillas dobles en el atributo de título

<a href=".." title="Some \"text\"">Some text</a> 
<!-- title looks like `Some \` --!> 

y

<a href=".." title="Some &quot;text&quot;">Some text</a> 
<!-- title looks like `Some ` --!> 

Tenga en cuenta que el uso de comillas simples es no una opción.

+16

@Haim leer la pregunta ... que dice "comillas simples no es una opción". –

+0

En el segundo ejemplo de Firefox se ve bien. – jcubic

+2

@harpax - Tenía curiosidad ¿por qué las comillas simples no son una opción? –

Respuesta

215

Esta variante -

<a href=".." title="Some &quot;text&quot;">Some text</a> 

es correcta y funciona como se esperaba - ves cotizaciones normales en página representada.

+0

Sí. 'Testing' y 'Testing too' funcionan para mí. –

+3

@Maris: Bueno ... no veo las comillas normales en la página renderizada cuando hago " (Firefox, Chrome). ¿Por qué? –

+0

@Maris, el mismo problema aquí. Vea el texto """ en IE y Chrome cuando el usuario pasa el mouse sobre el elemento. – rstackhouse

6

¿Funciona &#34; en lugar de &quot;?

18

EDIT: Enlace parece que está muerto, así que aquí está un fragmento de los caracteres de escape tomados de una página en caché en archive.org:

&#060 | less than sign <  
&#064 | at sign @  
&#093 | right bracket ]  
&#123 | left curly brace {  
&#125 | right curly brace }  
&#133 | ellipsis …  
&#135 | double dagger ‡  
&#146 | right single quote ’  
&#148 | right double quote ”  
&#150 | short dash –  
&#153 | trademark ™  
&#162 | cent sign ¢  
&#165 | yen sign ¥  
&#169 | copyright sign ©  
&#172 | logical not sign ¬  
&#176 | degree sign °  
&#178 | superscript 2 ²  
&#185 | superscript 1 ¹  
&#188 | fraction 1/4 ¼  
&#190 | fraction 3/4 ¾  
&#247 | division sign ÷  
&#8221 | right double quote ”  
&#062 | greater than sign > 
&#091 | left bracket [ 
&#096 | back apostrophe ` 
&#124 | vertical bar | 
&#126 | tilde ~ 
&#134 | dagger † 
&#145 | left single quote ‘  
&#147 | left double quote “ 
&#149 | bullet • 
&#151 | longer dash — 
&#161 | inverted excallamation point ¡ 
&#163 | pound sign £ 
&#166 | broken vertical bar ¦ 
&#171 | double left than sign « 
&#174 | registered trademark sign ® 
&#177 | plus or minus sign ± 
&#179 | superscript 3 ³ 
&#187 | double greather than sign » 
&#189 | fraction 1/2 ½ 
&#191 | inverted question mark ¿ 
&#8220 | left double quote “ 
&#8212 | dash — 

/EDIT

dar a este un tiro

HTML Escape character list.

Es una gran referencia para todos estos caracteres.

+8

Si bien este enlace puede responder al pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace de referencia. Las respuestas de solo enlace pueden dejar de ser válidas si la página vinculada cambia. –

+2

@KobiK buen grito - actualizado. – Dave

+0

... y le faltan las comillas estándar '" '.... – Paul

3

El uso de &quot; es la manera de hacerlo, probé el segundo fragmento de código y funciona tanto en Firefox como en IE.

1

Puede funcionar con cualquier carácter del HTML Escape character list, pero tuve el mismo problema con un proyecto de Java. Usé StringEscapeUtils.escapeHTML("Testing \" <br> <p>") y el título era <a href=".." title="Test&quot; &lt;br&gt; &lt;p&gt;">Testing</a>.

Solo funcionó para mí cuando cambié StringEscapeUtils a StringEscapeUtils.escapeJavascript("Testing \" <br> <p>") y funcionó en todos los navegadores.

+0

mejor solución en mi opinión –

+0

Bien si está usando Java, pero como el investigador original está pidiendo HTML, quizás esta no sea una opción. – Paul

1

Hay al menos una situación donde el uso de comillas simples no funcionará y eso es si está creando el marcado "sobre la marcha" desde Javascript. Utiliza comillas simples para contener la cadena y, a continuación, cualquier propiedad en el marcado puede tener comillas dobles para su valor.

0

Quizás usted puede utilizar el JavaScript para resolver su problema con el navegador cruzado. Se utiliza un mecanismo de escape diferente, aquella con la que estás, obviamente, ya está familiarizado:

(reference-to-the-tag).title = "Some \"text\""; 

No separa estrictamente las funciones de HTML, JS y CSS la forma en que la gente quiere que hoy en día, pero a quien le hacen necesito hacer feliz? ¿Tus usuarios o técnicos que no sabes?

+0

Overkill cuando el resultado deseado se puede lograr de una manera mucho más directa. – Paul

-1

Usted puede utilizar el código PHP a la lista de caracteres especiales ...

<table border="1"><?php for($i=33;$i<9000;$i++)echo "<tr><td>&#38;#$i;<td>&#".$i.";"; ?></table> 
Cuestiones relacionadas