我正在考虑编写可产生具有重复属性的HTML标签的代码,如下所示:
<div data-foo="bar" class="some-class" data-foo="baz">
这是合法的HTML吗?-值之一data-foo优先于另一个吗?我可以依靠半现代的浏览器(IE> = 9)来解析它而不会窒息吗?
data-foo
还是我要在这里做一些真正愚蠢的事情?
在一个元素中两次具有相同的属性名称是无效的。对此的权威性参考有些复杂,因为旧的HTML版本名义上是基于SGML,而对SGML标准的规范性引用暗含了这种限制。在HTML5 PR中,第8.1.2.3节“属性”明确指出:“同一开始标签上绝对不能有两个或多个属性,它们的名称彼此之间是不区分大小写的ASCII匹配。”
在实践中发生的是后一个属性被忽略。好吧,将来的浏览器可能会这样做。在DOM中,属性显示为元素节点以及attributes对象的属性,因此没有自然的方式来存储两个值。
attributes