2011-03-16 22 views
25

我是否需要在html屬性值內部轉義引號?什麼字符被允許?我可以在HTML屬性值中添加什麼值?

這有效嗎?

<span title="This is a 'good' title.">Hi</span> 
+0

檢查出最新的HTML5規範的稱號屬性:http://dev.w3.org/html5/spec/Overview.html#the-title-attribute相信title屬性使用CDATA類型這是在這裏定義的:http://www.w3.org/TR/html401/types。html#type-cdata – 2011-03-16 02:01:51

+0

只詢問&符號:http://stackoverflow.com/questions/3705591/do-i-encode-ampersands-in-a-href(來到之前不幸,所以沒有笨蛋......) – 2014-02-13 11:37:44

回答

37

如果你的屬性值引用(以雙引號"開頭和結尾),則允許除雙引號和&符號之外的任何字符,其必須引用爲分別爲和&amp;(或等效數字實體參考,&#34;&#38;

您也可以在屬性值周圍使用單引號。如果你這樣做,你可以在屬性中使用文字雙引號:<span title='This is a "good" title.'>...</span>。爲了在此屬性值內轉義單引號,您必須使用數字實體引用&#39;,因爲某些瀏覽器不支持命名實體&apos;(即not defined in HTML 4.01)。

此外,你還可以創建不帶引號的屬性,但是,許多進一步限制的字符集,你能夠在其內,禁止在屬性中使用的空間,='"<>`

查看the HTML5 spec瞭解更多詳情。

+1

要求轉義&符號的理由是什麼?它能代表什麼? – 2014-02-13 11:23:58

+5

嗯,好吧,它是因爲&符號本身將被解析爲一個實體。 – 2014-02-13 11:39:17

+4

&符號是屬性值中的有效字符。該規範禁止「不明確的&符號」,它是(&符號+字母數字字符+分號)的組合,它與任何指定的引用不匹配。 '' - 有效 '' - 無效 – Semra 2015-01-10 22:20:07

3

值可以是任何東西,但你應該逃脫引號(&quot;&apos;),標記分隔符(&lt;&gt;)和符號(&amp;)。

+0

這個看起來不正確(參見其他答案中的規格鏈接)。 – Christophe 2013-01-13 01:09:37

+0

它似乎並不禁止<, >等等。該規範僅禁止使用&符號。 – arviman 2018-02-13 12:57:24

4

這是有效的。但是,如果你不得不把雙引號裏面,你將有&quot;這樣逃脫:

<span title="This is a &quot;good&quot; title.">Hi</span> 
1

是的,沒關係。問題是當你嘗試在屬性中放置雙引號時。像這樣:

<span title="This is a "bad" title.">Hi</span> 

您可以通過使用HTML實體,像這樣解決這個問題:

<span title="This is a &quot;good&quot; title">Hi</span> 
0

下面是使用基於布賴恩·坎貝爾的答案正則表達式,爲一個不帶引號的最壞的情況下驗證功能屬性。

validator: function (val) { 
    if (!val || val.search(/['"=<>`]+|(&\s)+/) === -1) return true; 
    return 'Disallowed characters in HTML attributes: \' " = < > ` &.'; 
}, 
相關問題