大多数浏览器似乎都允许您创建所需的任何元素标签,并将所需的任何属性名称添加到元素。例如:

<!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也充分利用了自定义标签和属性-这在很大程度上取决于它。

但是,据我了解,做这种事情是不可以的,除非自定义html5属性带有“data-”前缀。

因此,我的问题是:不再需要建立自己的自定义元素标签和/或属性名称了吗?或者换种说法,AngularJS是否依赖非标准的怪癖,这些怪癖实际上不是HTML5规范的一部分,但是无论如何都能正常工作? Google的某个人发现了html5规范中一个久违的 secret 章节吗?还是我完全误会了什么?

最佳答案

它不会验证,但是会渲染。

HTML5被设计为非常宽容的(与XHTML相反)。这部分是为了使“较旧的” HTML5浏览器可以允许该版本尚不支持的新元素(以及格式错误的HTML)而不会破坏页面。

当然可以“利用”它来引入自定义标签。

话虽如此-您也可以使用HTML4做到这一点。

如评论中所述:您还可以在普通标签中使用data-前缀任何属性,并且它将进行验证。

10-04 16:14
查看更多