我最近收到了以下评论:
这些自定义属性(dw-filter等)是否适用于所有浏览器?违反
data-*
惯例。
可以说,现在角度在网络上变得越来越普遍,找到类似的东西是相当普遍的:
<a _ngcontent-c2 class="col-1-4" ng-reflect-router-link="/detail/13" href="/preview/cj9t4xj0v00113c5sw2c8s6w8/detail/13">
<div _ngcontent-c2 class="module">
<h4 _ngcontent-c2>Bombasto</h4>
</div>
</a>
W3 HTML5规范明确指出:
https://www.w3.org/TR/html5/dom.html#custom-data-attribute:自定义数据属性是no namespace中的一个属性,其名称以字符串“data-”开头
由于非常简单的任意自定义属性(some-attr="1"
)仍然适用于所有HTML5浏览器而没有抱怨/错误,因此Angular应用程序始终无法通过验证进行验证。
使用此类自定义属性的网站(有角度或无角度)是否真的需要遵守规范的这一部分?
答案 0 :(得分:0)
ng-
属性不是HTML规范的一部分。因此,它们是无效的标记。正确的自定义属性应以当前HTML5规范中指定的data-
开头。如果不是所有验证器,Angular属性不会这样做并且大多数失败。
未遵循网络标准是过去和现在都会引发问题的风险。如果某个属性受到其他一些群体的欢迎,或者甚至成为未来的标准,那么任何想要建立自己的人都会遇到问题。无论出于何种原因,WHATWG或W3C决定将ng-
作为安全属性的属性,每个Angular应用程序都将面临不确定的未来。
更不用说这个问题所见到的网络混乱。
始终,始终写有效的标记。
<强>评论:强>
为什么Angular故意违反HTML标准,我不知道。 (注意:请参阅评论中@angular的回复。)不幸的是,我看到网上的文章,开发人员说,“那又怎么样?”,对我而言,微软浏览器在与Firefox竞争之前的日子,然后来自谷歌的Chrome,Angular的开发者,他们吹嘘标准合规。