【问题标题】:Which browsers require data- prefix? [duplicate]哪些浏览器需要 data- 前缀? [复制]
【发布时间】:2013-12-30 20:45:14
【问题描述】:

我的情况恰好是针对 AngularJS,但实际上这是一个普遍的问题。

使用 AngularJS 时,有些功能需要自定义属性,例如 ng-repeat。建议是在它前面加上数据——所以“旧浏览器”不会删除它(在 Angular 的情况下,一些功能会被删除)。什么时候不再需要? IE8? IE9?添加它们并没有太大区别,但最好知道(而不是盲目地这样做)哪些浏览器需要它,或者更好的是,什么时候可以安全地停止添加前缀。

【问题讨论】:

  • 到目前为止,我使用 AngularJS 编写了一些 SPA,它们也必须在 IE8+ 上运行——甚至 IE8 的自定义属性也没有问题。如果您想使用自定义标签,只会出现问题。请务必阅读Developer Guide regarding IE8。
  • 旧版浏览器对待 data- 的方式与对待 ng- 的方式没有任何区别。两者都不是 html4 规范的一部分。话虽如此,浏览器似乎没有任何未知属性的问题。多年来一直使用任意属性,即使在 IE6 中也能正常工作

标签: html angularjs


【解决方案1】:

没有(至少是常见的)浏览器存在不使用 data 前缀的随机属性问题。从技术上讲,自定义属性应该以data 为前缀,以便“有效”,但实际上,当前不使用前缀没有缺点。该规范建议使用data 前缀,因为它是面向未来的。例如,如果您创建了一个名为 mask 的 Angular 指令并像这样使用它:<div mask></div>,那么如果 HTML6 引入了一个名为 mask 的属性,就会发生冲突。但是,data-mask 保证永远不会发生冲突。

虽然我个人完全不在乎我的页面是否使用 HTML 验证工具进行验证,但 data 提供的未来证明很有吸引力。为了方便起见,我一直不使用它。在大多数情况下,重构任何将来会成为冲突的东西可能不会有太多工作 - 无论如何这不太可能。

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

【讨论】:

    猜你喜欢
    • 2012-03-21
    • 2012-12-10
    • 2016-04-30
    • 1970-01-01
    • 1970-01-01
    • 2011-02-28
    • 2012-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多