15

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

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

将其用于现代化仍然被认为是一种好的做法吗?我应该使用别的东西吗?

4

2 回答 2

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 仍然可以很好地为您工作。

于 2012-05-18T23:16:25.743 回答
7

我们前段时间为 ie9.js 制作了一个补丁,并将其作为开源发布:https ://github.com/mylovecompany/ie9-js 。

于 2012-11-12T09:28:08.457 回答