JavaScript 兼容性库

Posted

技术标签:

【中文标题】JavaScript 兼容性库【英文标题】:JavaScript compatibility libraries 【发布时间】:2011-03-22 09:52:41 【问题描述】:

是否有提供与特定实现的前向兼容性的 javascript 库?例如,这样的库可以提供 JavaScript 1.6 中存在的功能,并且可以跨各种浏览器移植。如果可用,它应该利用对该功能的本机支持。

JQuery 或 Prototype 等一些框架提供的功能与较新版本的 JS 中的功能相同,但我想减少我正在使用的库的大小并确保完全符合标准或已发布的版本。

存在这样的库吗?谷歌和***在这个话题上没有太多要说的。

【问题讨论】:

【参考方案1】:

看起来有这样一个库:“JavaScript 标准库”(JSL)。它声称为支持 JS 1.2 或更高版本的浏览器提供尽可能多的 JS 1.6 兼容性。

我没用过,也不知道效果如何。文件是用粗略的英文写的;这可能表明缺乏广泛使用,否则现在可​​能已经有人纠正了。

更令人困惑的是,该站点链接到位于不同网站上的 JSL Revision,其功能列表表明它提供了 子集 的功能列在main page。

作者已经写了更多关于这个库以及this blog post 中涉及的一般概念。

【讨论】:

【参考方案2】:

例如,这样的库可以提供 JavaScript 1.6 中存在的功能,并且可以跨各种浏览器进行移植。如果可用,它应该利用对该功能的本机支持。

这几乎是框架所做的,并且做得很好(尽管它们弥补的大多数兼容性差距都与 DOM 和 CSS 有关)。我不知道专注于前向兼容性的通用框架。不确定这样的东西是否可以存在,因为看看the Wikipedia article,任何版本中的许多改进都是在旧版本中非常非常难以模拟的构造和行为语言(例如let,表达式闭包...)

【讨论】:

好点。我想到了这一点,但我认为 JS 1.6 可能没有指定任何此类功能。不过,在some more research 之后,我意识到我错了。 @intuit 不错的发现!有些功能可能可以在旧版本中进行模拟(尽管我不想成为负责实现它的人:D),但许多事情(特别是数组和字符串泛型)不能。跨度> 看起来for each 语法肯定不适合库实现。对我来说,似乎 Array 和 String 泛型可以通过覆盖各种 Array 和 String 原型方法来实现。但我只是第一次真正检查这个;我一直为 1.5 编写 JS,甚至避免学习新版本的功能。

以上是关于JavaScript 兼容性库的主要内容,如果未能解决你的问题,请参考以下文章

简单的JavaScript图像延迟加载库Echo.js

前端实用工具库——轻量的纯 JavaScript 动态提示工具插件库

JQuery

JavaScript库——jQuery

html5shiv让IE也能支持HTML5标签的JavaScript兼容库

AES 的 Javascript 实现与 PHP 的 mcrypt 兼容