jQuery作为临时polyfill

时间:2012-03-22 17:31:12

标签: javascript jquery json polyfills

我正在编写一个当前需要支持旧浏览器(如IE 7)的JavaScript,直到明年所有用户都升级到更现代的浏览器。

我在考虑使用jQuery作为临时polyfill,如下所示:

var flag=0;
window.JSON||(flag=1);
document.querySelectorAll||(flag=1);
if (flag===1) {
    // load jQuery here
}
else {
    // no need for jQuery
}

这种方法有意义吗?还有更好的方法吗?

现场演示在http://jsfiddle.net/3mzxr/

2 个答案:

答案 0 :(得分:3)

整个方法都很合理。你并不总是需要使用jQuery。

对于选择器功能,您可以直接使用Sizzle(5KB缩小和gzip),而无需使用Sizzle作为选择器引擎的整个jQuery(30+ KB)。 (但要小心,Sizzle本身长期以来bug与无法使用类似[autofocus]的布尔属性选择器有关。出于某种原因,该错误在jQuery级别上解决,而不是在Sizzle级别上修复它。)

对于JSON,您可以使用pure-JS JSON implementation(2.5 KB)。

此外,通常最好直接检测功能(检查window.JSON对象的JSON和document.querySelectorAll的{​​{1}}),而不假设支持qSA表示支持JSON 1}}。

答案 1 :(得分:1)

不,我不会这样做。

如果符合您的要求,请使用polyfill,可以使用yepnope之类的加载器和特定的polyfill脚本轻松完成填充。