我熟悉AngularJS,并且我注意到可以通过在指令前添加data-
前缀来使模板代码符合HTML5标准。 (例如,data-ng-repeat="..."
代替ng-repeat="..."
。)
我的第一直觉是为我的所有指令加上前缀,但我一直在想:这是否有令人信服的理由?是否有任何确认的浏览器无效HTML属性出现问题?在一段时间之前在所有内容中键入data-
会变得相当繁琐,并且会使HTML模板的可读性降低很多。
答案 0 :(得分:2)
属性名称必须包含除空格字符以外的一个或多个字符,U + 0000 NULL,U + 0022 QUOTATION MARK(“),U + 0027 APOSTROPHE('),”>“(U + 003E), “/”(U + 002F)和“=”(U + 003D)字符,控制字符以及未由Unicode定义的任何字符。在HTML语法中,属性名称,甚至是外来元素的属性名称,可能是用任何混合的小写和大写字母编写的,这些字母是属性名称的ASCII不区分大小写匹配。
http://www.w3.org/TR/html/syntax.html#attributes-0
自定义数据属性旨在将自定义数据存储为页面或应用程序的私有数据,而没有更合适的属性或元素。
http://www.w3.org/TR/html5/dom.html#custom-data-attribute
经过多次挖掘后,我找到了data-*
属性的部分。但是,它并没有真正说它是“必须”。它更像是“我们建议使用它”。
Afaik,浏览器无法识别的属性会被忽略,但仍可通过DOM对象的getAttribute
方法和attributes
属性访问。 data-*
通常是语义和方便的首选,尤其是在使用dataset时。
在类似的说明中,作为元素名称替代的指令的旧版本角度偶数recommends attribute name restrict限制了IE8的兼容性。指令通常具有自定义名称,这应该是自定义属性名称正常的指示符。