在HTML属性中name=value对中,'name'部分允许使用哪些字符? .....查看一些常见属性,似乎只有字母(a-z和A-Z)被使用,但是还有哪些字符可以被允许使用呢?...也许数字(0-9)、连字符(-)和句点(.)等字符也可以被允许使用... 是否有规范来说明这一点?
这取决于你所说的“允许”。每个标签都有一个固定的属性名称列表是有效的,而在HTML中它们是不区分大小写的。从一个重要的意义上来说,“允许”的仅仅是这些字符以正确的顺序。
另一种看待它的方式是,浏览器将处理哪些字符作为有效的属性名称。最好的建议来自HTML 5的解析器规范,可以在此处找到:https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
它说除了制表符、换行符、换页符、空格、斜杠、大于号、引号、撇号和等于号之外的所有字符都将被视为属性名称的一部分。个人而言,我不会尝试推动这些边缘情况。
/([^\t\n\f \/>"'=]+)/
,需要将其翻译为通俗易懂的中文。 - Natedata-foo
,在 JavaScript 中使用MyElem.data-foo;
会出现问题。请改为使用MyElem.getAttribute("data-foo");
。 - manuell因此,对于自定义元素名称,您可以使用大写/小写字母数字、下划线"_"、冒号":"或规范中指定的任何Unicode字符作为起始字符,然后使用破折号"-"、点"."、字母等作为主体字符。
假设你谈论的是XHTML,那么XML规则适用。
请参见http://www.w3.org/TR/2008/REC-xml-20081126/#NT-Name
名称和标记
[4] NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]
[4a] NameChar ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]
[5] Name ::= NameStartChar (NameChar)*
[6] Names ::= Name (#x20 Name)*
[7] Nmtoken ::= (NameChar)+
[8] Nmtokens ::= Nmtoken (#x20 Nmtoken)*
document.body.setAttribute('\u1fff', 1)
- 这将会出错。 - dy_data-
属性,因此“那不完全是真的”。 - ioquatix