我是否需要在html属性值内部转义引号?什么字符被允许?我可以在HTML属性值中添加什么值?
这有效吗?
<span title="This is a 'good' title.">Hi</span>
我是否需要在html属性值内部转义引号?什么字符被允许?我可以在HTML属性值中添加什么值?
这有效吗?
<span title="This is a 'good' title.">Hi</span>
如果你的属性值引用(以双引号"
开头和结尾),则允许除双引号和&符号之外的任何字符,其必须引用为分别为和&
(或等效数字实体参考,"
和&
)
您也可以在属性值周围使用单引号。如果你这样做,你可以在属性中使用文字双引号:<span title='This is a "good" title.'>...</span>
。为了在此属性值内转义单引号,您必须使用数字实体引用'
,因为某些浏览器不支持命名实体'
(即not defined in HTML 4.01)。
此外,你还可以创建不带引号的属性,但是,许多进一步限制的字符集,你能够在其内,禁止在属性中使用的空间,=
,'
,"
,<
,>
,`
。
查看the HTML5 spec了解更多详情。
要求转义&符号的理由是什么?它能代表什么? – 2014-02-13 11:23:58
嗯,好吧,它是因为&符号本身将被解析为一个实体。 – 2014-02-13 11:39:17
&符号是属性值中的有效字符。该规范禁止“不明确的&符号”,它是(&符号+字母数字字符+分号)的组合,它与任何指定的引用不匹配。 '' - 有效 '' - 无效 – Semra 2015-01-10 22:20:07
值可以是任何东西,但你应该逃脱引号("
,'
),标记分隔符(<
,>
)和符号(&
)。
这个看起来不正确(参见其他答案中的规格链接)。 – Christophe 2013-01-13 01:09:37
它似乎并不禁止<, >等等。该规范仅禁止使用&符号。 – arviman 2018-02-13 12:57:24
这是有效的。但是,如果你不得不把双引号里面,你将有"
这样逃脱:
<span title="This is a "good" title.">Hi</span>
不,你不需要逃避双引号内的单引号。
此页面指定span标记的有效属性:
http://www.w3.org/TR/html401/struct/global.html#edef-SPAN
本页面指定允许在title属性有效的字符:
是的,没关系。问题是当你尝试在属性中放置双引号时。像这样:
<span title="This is a "bad" title.">Hi</span>
您可以通过使用HTML实体,像这样解决这个问题:
<span title="This is a "good" title">Hi</span>
下面是使用基于布赖恩·坎贝尔的答案正则表达式,为一个不带引号的最坏的情况下验证功能属性。
validator: function (val) {
if (!val || val.search(/['"=<>`]+|(&\s)+/) === -1) return true;
return 'Disallowed characters in HTML attributes: \' " = < > ` &.';
},
检查出最新的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
只询问&符号:http://stackoverflow.com/questions/3705591/do-i-encode-ampersands-in-a-href(来到之前不幸,所以没有笨蛋......) – 2014-02-13 11:37:44