2013-12-12 38 views
1

我的情况恰好适用于AngularJS,但真的这是一个普遍的问题。哪些浏览器需要数据前缀?

使用AngularJS时,有些功能需要自定义属性,例如ng-repeat。建议使用数据前缀 - 因此“旧版浏览器”不会删除它(在Angular的情况下,某些功能将被删除)。什么时候不再需要? IE8? IE9?添加它们并没有太大的区别,但是真正了解(而不是盲目地)浏览器需要它,或者更好的是,可以安全地停止添加前缀。

+0

它实际上是说[*如果您想使用HTML验证工具,则可以使用数据前缀版本*](http://docs.angularjs.org/#creating-custom-directives_matching-directives)。 –

+1

现在,我写了一些使用AngularJS的SPA,它们也必须在IE8 +上工作 - 甚至IE8在自定义属性方面也没有问题。如果你想使用自定义标签只有问题。只要确保阅读[关于IE8的开发者指南](http://docs.angularjs.org/guide/ie)。 – naeramarth7

+0

旧版本的浏览器不会将'data-'与'ng-'区别开来。这两者都不是html4规范的一部分。据说,浏览器似乎没有任何未知属性的问题。多年来一直使用任意属性,即使在IE6中也是如此 – charlietfl

回答

2

没有(至少是普通的)浏览器在使用前缀不使用data前缀的随机属性时出现问题。从技术上讲,自定义属性应该以data为前缀,以便“有效”,但实际上,不存在当前的缺点以避免前缀。该规范建议使用data前缀,因为它是未来的证明。例如,如果您创建了一个名为mask的角度指令并使用它,如下所示:<div mask></div>,那么如果HTML6引入了一个名为mask的属性,则会产生冲突。然而,data-mask保证不会成为冲突。

虽然我个人并不关心如果我的网页验证与HTML验证工具,data提供的未来证明是吸引人..我一直离开它的方便。在大多数情况下,重构将来会变成冲突的任何事情可能都不会有太多工作 - 这是不太可能的。

您可能一直在想的是Angular使用自定义elements,就像如果您想将mask指令用作<mask></mask>一样。为了使自定义元素在较旧的IE中工作,请阅读http://docs.angularjs.org/guide/ie