使用AngularJS指令进行W3C验证

31

如何在Angular应用中进行W3C验证?

由于自定义指令导致HTML无效,我们通常会看到许多W3C验证错误。是否有任何应对策略?

2个回答

35

严格的w3c验证允许任何data-* 属性,以及任何类。

指令可以应用到具有以下任一属性的DOM元素:

  1. <tag directive-name>
  2. <tag data-directive-name> (*)
  3. <tag x-directive-name>
  4. <tag directive_name>
  5. <tag x_directive_name>
  6. <tag data_directive_name>

至少data-属性已完全符合W3C标准(前提是您声明了HTML5文档类型)。因此,以下代码是有效的(当然它会因为缺少标题、缺少编码等而失败):

<!DOCTYPE html>
<html>
 <body data-ng-app="MyApp">
 </body>
</html>

为了明确,这里有一个使用Tidy算法验证一些AngularJS代码失败的示例。无论如何,x-或data-前缀如何帮助ng-*指令?第330行第74列 - 错误:此时元素div上不允许使用属性ng-app。 第330行第74列 - 错误:此时元素div上不允许使用属性ng-controller。 第354行第125列 - 错误:此时元素input上不允许使用属性ng-model。 第387行第64列 - 错误:此时元素li上不允许使用属性ng-repeat。 - AndyB
3
在属性前面加上 data- 并声明其为 HTML5。 - rewritten
1
跟进一下,data-前缀在Tidy算法验证器中表现得非常好,而且显然也适用于自定义指令! - AndyB
@JukkaK.Korpela 我可能误解了,但是 AngularJS 不是可以被视为某种供应商吗?这样的话,根据规范,x-* 前缀就是有效的。 - wbyoung
1
@wbyoung,HTML5 CR 中的 可扩展性 部分提到了 x-* 属性:“注意:使用这些属性的页面在定义上是不符合规范的。” - Jukka K. Korpela
显示剩余3条评论

-1

在线验证Angular代码的W3验证

如果您尝试使用http://validator.w3.org/验证您的AngularJS代码,您可能已经注意到它不允许AngularJS ng-*属性。

一种验证的方法(如@rewritten所解释的那样)是在ng-*前缀中加上data-x-

不想在我的应用程序的800个属性上这样做。在我看来,这会降低代码的清晰度,特别是当我们使用大量这些属性时。


W3C HTML5验证团队开发了一个工具,允许在验证过程中过滤错误,并接受良好的ng-*属性。您可以在此URL上尝试它:http://validator.w3.org/nu/ 提交文档进行检查后,在结果页面上,您将看到一个“消息过滤”按钮,如果按下该按钮,您将获得所有错误消息分组为集合的列表,并带有显示/隐藏复选框。

Screenshot of the validator

源代码


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接