为什么没有data-*元素?

5
这是一个满足我的好奇心的问题:随着最近5年来大型JavaScript框架的增长和接受度,越来越普遍地在元素上添加属性以添加自定义行为到已知的HTML元素。因此,HTML5引入了data-*属性,几乎每个工具(包括解析DOM的浏览器)在呈现时都会忽略它们,但对于Js框架来说,它们是丰富HTML作为全功能应用平台的关键。
例如,使用Angular指令,应用程序构建者通过添加创建自定义元素的能力来丰富整个HTML。但是,这就是编辑工具(如Visual Studio)破裂的地方,因为它们喜欢主动检查您添加的HTML元素是否存在。
现在,我的问题不是关于Visual Studio(我知道如何禁用HTML验证),而是为什么HTML5标准的创建者从未考虑过包括data-*元素?或者也许他们确实考虑过,但这个想法被废弃了。有人知道吗?

我们现在最接近的就是 <script type='text/whatever'> 标签,你可以在其中放入东西。 - Thilo
据我所知,data-是在HTML5中引入的,很多人使用它们,但在我看来,大多数人只是用它来通过HTML验证(即w3c验证器)。 - maurycy
我的理解是,data- 是用于用户定义标签的,应该被验证工具忽略。 - Lee Willis
自定义元素当然已经被考虑了很多次。您应该查看Web组件和Polymer polyfill。 - Alohci
1个回答

0

data-前缀实际上是HTML5草案的一部分。

这些属性用于语义化HTML;例如,将数据库ID附加到HTML元素中,以便HTML解析器可以使用此数据。在Angular的情况下,自定义属性不携带数据;它们扩展了HTML。

Mozilla在数据前缀方面有一些指南:https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Using_data_attributes

编辑 HTML元素的目的是携带要由浏览器显示的内容,将属性附加到这些元素并将<head>附加到整个文档的元数据。HTML中没有data-元素,因此与该设计保持一致。


我认为他在询问如何使用 data- 元素进行验证,而不是已知的属性。 - Gildor
就像Gildor所说的那样,我的问题是关于元素而不是属性。 - Gerben Rampaart
@Christian。对我来说,问题在于这种情况下,“div data-something =”可能只是针对JavaScript框架而设计的,但它仍然由浏览器呈现。数据元素应该被完全忽略。 - Gerben Rampaart
元素的目的是携带浏览器显示的内容,属性用于附加元数据到这些元素上,而<head>则用于附加元数据到文档上。至于为什么没有"data-"元素,那是为了保持设计的一致性。 - Christian Rondeau
嗨,@ChristianRondeau,我正在查看我的过去问题,你能把你的评论放在答案里,这样我就可以标记它了吗?谢谢。 - Gerben Rampaart
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接