在HTML属性值中,我是否需要转义引号?有哪些字符是允许的?
下面的代码是合法的吗?
<span title="This is a 'good' title.">Hi</span>
在HTML属性值中,我是否需要转义引号?有哪些字符是允许的?
下面的代码是合法的吗?
<span title="This is a 'good' title.">Hi</span>
"
开头和结尾),则允许使用除双引号和ampersands之外的任何字符,这些字符必须分别用"
和&
引用(或等效的数字实体引用"
和&
)。<span title='This is a "good" title.'>...</span>
。为了在此类属性值中转义单引号,您必须使用数字实体引用'
,因为某些浏览器不支持命名实体'
(它在HTML 4.01中未定义)。=
、'
、"
、<
、>
、`
。&
的原因是什么?它可以代表什么? - Ciro Santilli OurBigBook.com<a title="foo & bar">
- 合法
<a title="&foo;">
- 不合法 - Semra那是正确的。但是,如果你需要在内部使用双引号,你必须用"
进行转义,就像这样:
<span title="This is a "good" title.">Hi</span>
"
,'
),标记分隔符(<
,>
)和&符号(&
)。不需要在双引号内转义单引号。
此页面指定了span标签的有效属性:
http://www.w3.org/TR/html401/struct/global.html#edef-SPAN
此页面指定了标题属性中允许使用的有效字符:
没问题。问题在于当你尝试在属性中放置双引号时,就像这样:
<span title="This is a "bad" title.">Hi</span>
您可以通过使用HTML实体来避免这种情况,如下所示:
<span title="This is a "good" title">Hi</span>
这里是一个验证函数,使用基于Brian Campbell的答案的正则表达式,用于最坏情况下的未引用属性。
validator: function (val) {
if (!val || val.search(/['"=<>`]+|(&\s)+/) === -1) return true;
return 'Disallowed characters in HTML attributes: \' " = < > ` &.';
},