一尘不染

HTML元素可以具有两次相同的属性吗?

html

我正在考虑编写可产生具有重复属性的HTML标签的代码,如下所示:

<div data-foo="bar" class="some-class" data-foo="baz">

这是合法的HTML吗?-值之一data-foo优先于另一个吗?我可以依靠半现代的浏览器(IE> = 9)来解析它而不会窒息吗?

还是我要在这里做一些真正愚蠢的事情?


阅读 633

收藏
2020-05-10

共1个答案

一尘不染

在一个元素中两次具有相同的属性名称是无效的。对此的权威性参考有些复杂,因为旧的HTML版本名义上是基于SGML,而对SGML标准的规范性引用暗含了这种限制。在HTML5
PR中,第8.1.2.3节“属性”明确指出:“同一开始标签上绝对不能有两个或多个属性,它们的名称彼此之间是不区分大小写的ASCII匹配。”

在实践中发生的是后一个属性被忽略。好吧,将来的浏览器可能会这样做。在DOM中,属性显示为元素节点以及attributes对象的属性,因此没有自然的方式来存储两个值。

2020-05-10