2010-09-20 12 views
137

Ich versuche, eine Zeichenfolge zu verwenden, die doppelte Anführungszeichen im Title-Attribut eines Ankers enthält. Bisher habe ich versucht, diese:Wie doppelte Anführungszeichen in Titelattribut zu vermeiden

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

und

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

Bitte beachten Sie, dass mit einfachen Anführungszeichen ist nicht eine Option.

+16

die Frage @Haim lesen ... heißt es „Apostrophe ist keine Option“. –

+0

Auf Firefox zweiten Beispiel sieht gut aus. – jcubic

+2

@harpax - Ich war nur neugierig, warum einfache Anführungszeichen keine Option sind? –

Antwort

215

Diese Variante -

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

ist richtig und es funktioniert wie erwartet - Sie normale Anführungszeichen in gerenderten Seite.

+0

Yep. 'Testing' und 'Testing too' arbeiten für mich. –

+3

@Maris: Nun ... ich sehe keine normalen Zitate in gerenderten Seite, wenn ich " (Firefox, Chrome) mache. Warum? –

+0

@Maris, das gleiche Problem hier. Der Text """ wird sowohl in IE als auch in Chrome angezeigt, wenn der Benutzer über das Element mausiert. – rstackhouse

6

Funktioniert &#34; anstelle von &quot;?

18

EDIT: Link scheint tot zu sein, also hier ist ein Ausschnitt aus der Escape-Zeichen aus einer Cache-Seite auf archive.org genommen:

&#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

dieses Geben Sie einen Schuss

HTML Escape character list.

Es ist eine gute Referenz für all diese Zeichen.

+8

Während dieser Link die Antwort beantworten kann Frage, es ist besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz zur Verfügung zu stellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. –

+2

@KobiK good shout - aktualisiert. – Dave

+0

... und fehlt der Standard '"' Zitate .... – Paul

3

Mit &quot; ist der Weg, es zu tun, habe ich Sie zweiten Code-Snippet ausprobiert und es funktioniert auf Firefox und IE.

1

Es kann mit jedem Zeichen aus der HTML Escape character list arbeiten, aber ich hatte das gleiche Problem mit einem Java-Projekt. Ich habe und der Titel war <a href=".." title="Test&quot; &lt;br&gt; &lt;p&gt;">Testing</a>.

Es funktionierte nur für mich, wenn ich die StringEscapeUtils zu StringEscapeUtils.escapeJavascript("Testing \" <br> <p>") änderte und es in jedem Browser funktionierte.

+0

beste Lösung meiner Meinung nach –

+0

Gut, wenn Sie Java verwenden, aber da der ursprüngliche Anfrager nach HTML fragt, ist dies vielleicht keine Option. – Paul

1

Es gibt mindestens eine Situation, in der die Verwendung von einfachen Anführungszeichen nicht funktioniert, wenn Sie das Markup "on the fly" aus Javascript erstellen. Sie verwenden einfache Anführungszeichen, um die Zeichenfolge zu enthalten, und dann kann jede Eigenschaft im Markup doppelte Anführungszeichen für ihren Wert haben.

0

Vielleicht können Sie JavaScript verwenden, um Ihr browserübergreifendes Problem zu lösen. Es verwendet einen anderen Escape-Mechanismus, eine, mit der sie ist offensichtlich bereits vertraut:

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

es nicht streng trennt die Funktionen von HTML, JS und CSS die Art und Weise Leute wollen Sie heute, aber wen tun Sie Müssen Sie glücklich machen? Ihre Benutzer oder Techniker kennen Sie nicht?

+0

Overkill, wenn das gewünschte Ergebnis viel einfacher erreicht werden kann. – Paul

-1

Sie diesen PHP-Code verwenden können Sonderzeichen zur Liste ...

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