0

我正在编写一个当前需要支持旧浏览器(如 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/

4

2 回答 2

3

整个做法是相当合理的。不过,您并不总是需要使用 jQuery。

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

对于 JSON,您可以使用纯 JS JSON 实现(2.5 KB)。

此外,通常最好直接检测特征(检查window.JSONJSON 和document.querySelectorAllfor 的对象qSA)而不假设支持JSON意味着支持querySelectorAll().

于 2012-03-22T17:44:39.773 回答
1

不,我不会这样做。

如果这是您想要的,请使用 polyfill,它可以通过yepnope 之类的加载器和特定的 polyfill 脚本轻松完成,用于您想要填充的内容。

于 2012-03-22T17:43:46.510 回答