我是否需要在html属性值中转义引号?允许使用哪些字符?
这有效吗?
<span title="This is a 'good' title.">Hi</span>
答案 0 :(得分:41)
如果您的属性值被引用(以双引号"
开头和结尾),则允许使用除双引号和&符号之外的任何字符,必须引用"
和{{1}分别(或等效的数字实体引用,&
和"
)
您还可以在属性值周围使用单引号。如果这样做,您可以在属性中使用文字双引号:&
。为了在这样的属性值中转义单引号,必须使用数字实体引用<span title='This is a "good" title.'>...</span>
,因为某些浏览器不支持命名实体'
(not defined in HTML 4.01)。
此外,您还可以创建没有引号的属性,但这会进一步限制您可以拥有的字符集,禁止使用空格,'
,=
,{{1属性中的},'
,"
,<
。
有关详细信息,请参阅the HTML5 spec。
答案 1 :(得分:4)
这是有效的。但是,如果您必须在内部放置双引号,则必须使用"
进行转义:
<span title="This is a "good" title.">Hi</span>
答案 2 :(得分:3)
值可以是任何值,但您应该转义引号("
,'
),标记分隔符(<
,>
)和&符号({{1} })。
答案 3 :(得分:3)
不,你不需要在双引号内转义单引号。
此页面指定span标记的有效属性:
http://www.w3.org/TR/html401/struct/global.html#edef-SPAN
此页面指定title属性中允许的有效字符:
答案 4 :(得分:1)
是的,没关系。问题是当你尝试在属性中放入双引号时。像这样:
<span title="This is a "bad" title.">Hi</span>
您可以通过使用HTML实体来解决这个问题:
<span title="This is a "good" title">Hi</span>
答案 5 :(得分:0)
这是一个验证函数,使用基于Brian Campbell答案的正则表达式,最坏情况下是一个不带引号的属性。
validator: function (val) {
if (!val || val.search(/['"=<>`]+|(&\s)+/) === -1) return true;
return 'Disallowed characters in HTML attributes: \' " = < > ` &.';
},