我正在编写一个当前需要支持旧浏览器(如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
}
这种方法有意义吗?还有更好的方法吗?
答案 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脚本轻松完成填充。