web-dev-qa-db-fra.com

Comment échapper aux guillemets dans un attribut de titre

J'essaie d'utiliser une chaîne contenant des guillemets doubles dans l'attribut title d'une ancre. Jusqu'ici j'ai essayé ces:

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

et

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

Veuillez noter que l’utilisation de guillemets simples est non une option.

177
harpax

Cette variante -

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

Est correct et cela fonctionne comme prévu - vous voyez des citations normales dans la page rendue.

258
Māris Kiseļovs

Voici un extrait des caractères d'échappement HTML extraits de ne page en cache sur 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 exclamation 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 greater-than sign    »   
&#189   |   fraction 1/2    ½   
&#191   |   inverted question mark  ¿   
&#8220  |   left double quote   “   
&#8212  |   dash    —   
22
Dave

Le code d'échappement &#34; peut également être utilisé à la place de &quot;.

7
fredley

Utiliser &quot; est le moyen de le faire. J'ai essayé votre deuxième extrait de code, et cela fonctionne à la fois dans Firefox et Internet Explorer.

3
TheCee

Cela peut fonctionner avec n'importe quel caractère de la liste HTML Escape character , mais j'ai eu le même problème avec un projet Java. J'ai utilisé StringEscapeUtils.escapeHTML("Testing \" <br> <p>") et le titre était <a href=".." title="Test&quot; &lt;br&gt; &lt;p&gt;">Testing</a>.

Cela ne fonctionnait que pour moi lorsque j'ai changé le StringEscapeUtils en StringEscapeUtils.escapeJavascript("Testing \" <br> <p>") et cela fonctionnait dans tous les navigateurs.

2
Rodrigo Horta

Il existe au moins une situation dans laquelle l’utilisation de guillemets simples ne fonctionnera pas, c’est-à-dire si vous créez le balisage "à la volée" à partir de JavaScript. Vous utilisez des guillemets simples pour contenir la chaîne, puis toute propriété du marquage peut avoir des guillemets doubles pour sa valeur.

1
cvadillo

Peut-être pouvez-vous utiliser JavaScript pour résoudre votre problème de navigation croisée. Il utilise un mécanisme d'échappement différent, avec lequel vous êtes évidemment déjà familier:

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

Il ne sépare pas strictement les fonctions de HTML, JavaScript et CSS comme les gens le souhaitent, mais qui a besoin de rendre heureux? Vos utilisateurs ou techniciens que vous ne connaissez pas?

0
WebManWalking