【发布时间】:2013-09-10 23:57:33
【问题描述】:
大多数浏览器似乎允许您创建任何您喜欢的元素标签,并为元素添加任何您喜欢的属性名称。例如:
<!DOCTYPE html>
<html>
<body>
<div my-attribute="has no data- prefix, but seems to behave like an attribute should">
<br/>
<hello-world style="display:block;background:#eee">Hello Everybody</hello-world>
<goodby-world style="background:#faa">Default display is inline</goodbye-world>
</div>
</body>
</html>
以上显示正常。看起来未定义的元素的行为很像跨度。 看起来 AngularJS 也大量利用了自定义标签和属性——这在很大程度上取决于它。
但是,据我所知,做这种事情是不行的,除非是带有“data-”前缀的自定义 html5 属性。
所以,我的问题是:组成自己的自定义元素标签和/或属性名称不再是禁忌吗?或者换一种说法,AngularJS 是否依赖非标准的怪癖,这些怪癖并不是 HTML5 规范的一部分,但只是碰巧起作用?谷歌的某个人是否发现了 html5 规范中失传已久的秘密章节?还是我完全误解了什么?
【问题讨论】:
-
怪癖是 HTML5 规范的一部分,因此所有浏览器都应该以相同的方式进行垃圾处理,这意味着即使像 angular 使用的垃圾 html 在 HTML5 浏览器中也是跨浏览器一致的。如果要验证,请遵循规范。如果您更关心角度特征而不是验证,请使用 angular.如果你想要两者,使用类或数据属性来驱动角度而不是自定义标签和属性。
标签: javascript html angularjs