ie9-js - 有什么东西让它过时了吗?

Mar*_*cin 15 html5 internet-explorer cross-browser web-standards ie7.js

所以,每个人都知道ie9.js(来自http://code.google.com/p/ie7-js/).它似乎有效,但自2010年上一次发布以来从未离开过测试版.

显然,还有一些其他的东西有点类似(例如modernizr,html5shiv和CSS3Pie),但它们并不完全相同(尤其是因为它们需要按功能应用或范围更有限).

用它来进行现代化仍然是一种良好的做法吗?我应该使用其他东西吗?

Spu*_*ley 14

ie9.js仍然是一段很好的代码.它做了很多工作,修复了IE出错的东西.

正如您正确指出的那样,它现在是一段旧代码,但它仍然有效.

人们可能不再那么多地使用它的原因:

  • ie9.js是单个大型polyfill.这使得它笨重而缓慢.如果您只需要修复某些特定功能,则可能过度杀伤; 一些较小的补丁可能会更好.
  • ie9.js所做的大部分修复都适用于IE6.越来越少的网站不再需要支持IE6,因此所有代码都是多余的.同样,一些较小的补丁可能会更好.
  • ie9.js不再被积极维护.这很好,因为它完成了它要做的工作,但是其他更新的补丁产生了更多的兴趣,因为它们是新的,因为它们可能具有任何优势.

在你提到的替代工具(modernizr,html5shiv,CSS3Pie)中,它们实际上都没有与ie9.js交叉的任何功能.(另见这个答案)

但是,这里有一些更新的工具可能是ie9.js的好替代品:

  • jQuery - 或其他类似的库之一.这不仅仅是修复IE的漏洞,而且因为它提供了跨浏览器兼容性,即使在IE6中,如果你正在编写jQuery代码,也很少需要ie9.js提供的Javascript补丁.
  • Selectivzr - 这可能是主要的一个.它是IE不支持的大多数缺少CSS选择器的polyfill.ie9.js做了一些(IE6和7的关系选择器),但Selectivzr使用预先存在的选择器引擎(你选择的jQuery,Prototype等),这意味着它非常快速且轻量级,因为它利用了资源已加载.

鉴于目前浏览器中的绝大多数JS代码都是使用jQuery编写的,这基本上减少了对ie9.js等无所不包的IE修复补丁的需求,几乎为零.

但是,如果您没有使用jQuery或类似的库,那么您可能会发现ie9.js仍可以很好地为您工作.


小智 7

我们已经为ie9.js做了一个补丁,并将其作为开源发布:https://github.com/mylovecompany/ie9-js.