วิธีการหลีกเลี่ยงอัญประกาศคู่ในแอตทริบิวต์ title


195

ฉันพยายามใช้สตริงที่มีเครื่องหมายคำพูดคู่ในแอตทริบิวต์ title ของสมอ จนถึงตอนนี้ฉันได้ลอง:

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

และ

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

โปรดทราบว่าการใช้เครื่องหมายคำพูดเดี่ยวไม่ใช่ตัวเลือก


18
@ ฮาอิมอ่านคำถาม ... มันบอกว่า "อัญประกาศเดี่ยวไม่ใช่ตัวเลือก"
Nils Riedemann

2
@harpax - ฉันแค่อยากรู้ว่าทำไมคำพูดเดียวไม่ใช่ตัวเลือก?
Bert F

3
เครื่องหมายคำพูดเดี่ยวไม่ใช่ html ที่ถูกต้อง
skyfoot

1
ตัวอย่างที่สองของคุณควรทำงานอย่างสมบูรณ์แบบ คุณพบปัญหาในเบราว์เซอร์ใด
Olly Hodgson

1
@harpax: บางทีคุณควรชี้แจง "คำพูดเดียวไม่ใช่ตัวเลือก" - ความต้องการ ฉันเดาได้เลยว่าคุณพูดคำเดียว "ข้างใน" สตริง "ไม่ใช่ตัวเลือก (แสดงให้ผู้ใช้เห็น) แต่เพียงแค่พลิกเครื่องหมายคำพูดเดี่ยวและคู่ตามที่ฮาอิมแสดงให้เห็นข้างต้นก็โอเค
Christian.K

คำตอบ:


284

ตัวแปรนี้ -

<a title="Some &quot;text&quot;">Hover me</a>

ถูกต้องและทำงานได้ตามที่คาดไว้ - คุณเห็นราคาปกติในหน้าที่แสดงผล


อ๋อ <a href="#" title="Foo &quot;Bar&quot;">Testing</a>และ<a href="#" title="Smart quotes &#8221;Bar&#8220;">Testing too</a>ทำงานให้ฉัน
Olly Hodgson

5
@Maris: ดี ... ฉันไม่เห็นราคาปกติในหน้าเว็บที่แสดงผลเมื่อฉันสร้าง & quot; (Firefox, Chrome) ทำไม?
Krzysztof Trzos

@Maris ปัญหาเดียวกันที่นี่ ดูข้อความ "& quot;" ปรากฏทั้งใน IE และ Chrome เมื่อผู้ใช้เลื่อนเมาส์ไปวางบนองค์ประกอบ
rstackhouse

ทำงานอย่างน่าอัศจรรย์ใจกับเนื้อหา HTML ที่ฝังอยู่ภายในแอตทริบิวต์ (สำหรับจาวาสคริปต์เพื่อสร้าง textarea ที่แก้ไขได้):data-editable-note="<?php echo str_replace('"', '&quot;', $note); ?>"><?php echo mark::up($note); ?></div>
WEBjuju

23

ต่อไปนี้เป็นตัวอย่างของอักขระการหลีกเลี่ยง HTML ที่นำมาจากหน้าแคชใน 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    —   


3

การใช้&quot;เป็นวิธีที่จะทำ ฉันลองใช้ข้อมูลโค้ดที่สองของคุณและทำงานได้ทั้ง Firefox และ Internet Explorer


2

มันอาจทำงานกับตัวละครจากรายการตัวละคร HTML Escapeแต่ฉันมีปัญหาเดียวกันกับโครงการ Java ฉันใช้StringEscapeUtils.escapeHTML("Testing \" <br> <p>")และชื่อเป็น<a href=".." title="Test&quot; &lt;br&gt; &lt;p&gt;">Testing</a>และชื่อเป็น

มันใช้งานได้สำหรับฉันเมื่อฉันเปลี่ยน StringEscapeUtils เป็นStringEscapeUtils.escapeJavascript("Testing \" <br> <p>")และทำงานได้ในทุกเบราว์เซอร์


ทางออกที่ดีที่สุดในความคิดของฉัน
Mohammed Rafeeq

ไม่เป็นไรถ้าคุณใช้จาวา แต่ในฐานะที่เป็นผู้ถามหาต้นฉบับขอ HTML บางทีนี่อาจไม่ใช่ตัวเลือก
พอล

1

มีอย่างน้อยหนึ่งสถานการณ์ที่การใช้อัญประกาศเดี่ยวจะไม่ทำงานและนั่นคือถ้าคุณกำลังสร้างมาร์กอัป "ในทันที" จาก JavaScript คุณใช้อัญประกาศเดียวเพื่อเก็บสตริงและจากนั้นคุณสมบัติใด ๆ ในมาร์กอัปสามารถมีอัญประกาศคู่สำหรับค่าของมัน


1

บางทีคุณสามารถใช้ JavaScript เพื่อแก้ปัญหาข้ามเบราว์เซอร์ของคุณ มันใช้กลไกการหลบหนีที่แตกต่างซึ่งเป็นสิ่งที่คุณคุ้นเคยอยู่แล้ว:

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

มันไม่ได้แยกฟังก์ชั่นของ HTML, JavaScript, และ CSS อย่างที่ผู้คนต้องการให้คุณทุกวันนี้ แต่คุณต้องทำให้ใครมีความสุข? ผู้ใช้หรือคนรู้จักของคุณไม่รู้จัก?


overkill เมื่อ esult ที่ต้องการสามารถประสบความสำเร็จได้อย่างตรงไปตรงมามากขึ้น
พอล

-3

คุณสามารถใช้รหัส PHP นี้เพื่อแสดงรายการอักขระพิเศษ ...

<table border="1"><?php for($i=33;$i<9000;$i++)echo "<tr><td>&#38;#$i;<td>&#".$i.";"; ?></table>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.