Javascript jQuery作为临时多边形填充
我正在编写一个JavaScript,目前需要支持较旧的浏览器(如IE7),直到明年所有用户都升级到更现代的浏览器 我正在考虑将jQuery用作临时多边形填充,如下所示:Javascript jQuery作为临时多边形填充,javascript,jquery,json,polyfills,Javascript,Jquery,Json,Polyfills,我正在编写一个JavaScript,目前需要支持较旧的浏览器(如IE7),直到明年所有用户都升级到更现代的浏览器 我正在考虑将jQuery用作临时多边形填充,如下所示: var flag=0; window.JSON||(flag=1); document.querySelectorAll||(flag=1); if (flag===1) { // load jQuery here } else { // no need for jQuery } 这种方法有意义吗?有更好的办法
var flag=0;
window.JSON||(flag=1);
document.querySelectorAll||(flag=1);
if (flag===1) {
// load jQuery here
}
else {
// no need for jQuery
}
这种方法有意义吗?有更好的办法吗
现场演示就在这里不,我不会这样做
使用polyfill如果这是您想要的,可以很容易地使用加载程序和特定的polyfill脚本来完成。不,我不会这样做
使用polyfill如果这是您想要的,可以很容易地使用加载程序和特定的polyfill脚本来完成。整个方法非常合理。不过,您并不总是需要使用jQuery 对于选择器功能,您可以直接使用(5KB缩小和gzip),而不需要使用Sizzle作为选择器引擎的整个jQuery(30+KB)。(但要小心,Sizzle本身长期以来都与无法使用布尔属性选择器(如
[autofocus]
)有关。出于某种原因,该错误是在jQuery级别解决的,而不是在Sizzle级别解决的。)
对于JSON,可以使用(2.5 KB)
另外,通常最好直接检测特性(检查JSON的
window.JSON
对象和qSA的document.queryselectoral
),而不假设支持JSON
意味着支持queryselectoral()
整个方法是相当合理的。不过,您并不总是需要使用jQuery
对于选择器功能,您可以直接使用(5KB缩小和gzip),而不需要使用Sizzle作为选择器引擎的整个jQuery(30+KB)。(但要小心,Sizzle本身长期以来都与无法使用布尔属性选择器(如[autofocus]
)有关。出于某种原因,该错误是在jQuery级别解决的,而不是在Sizzle级别解决的。)
对于JSON,可以使用(2.5 KB)
另外,通常最好直接检测特性(检查window.JSON
对象中的JSON和document.querySelectorAll
中的qSA
),而不假设支持JSON
意味着支持querySelectorAll()
,你到底在写什么?Jquery不仅仅适用于json,它还具有许多其他功能,在大多数情况下可以很好地弥补浏览器的不足。我不确定您想要做什么。如果要检测用户的浏览器并更改代码。使用@Rup good point,我还需要编写包装函数,比如myJSON=window.JSON | |$。JSON@MarcB我主要需要JSON和DOM选择器。在我的情况下,其他jQuery函数没有带来多少价值,最终我不想被绑定到特定的库。@humaknight浏览器检测是不够的,功能可用性还取决于doctype。关键是我想在加载jQuery之前检测它。你到底在写什么?Jquery不仅仅适用于json,它还具有许多其他功能,在大多数情况下可以很好地弥补浏览器的不足。我不确定您想要做什么。如果要检测用户的浏览器并更改代码。使用@Rup good point,我还需要编写包装函数,比如myJSON=window.JSON | |$。JSON@MarcB我主要需要JSON和DOM选择器。在我的情况下,其他jQuery函数没有带来多少价值,最终我不想被绑定到特定的库。@humaknight浏览器检测是不够的,功能可用性还取决于doctype。关键是我想在加载jQuery之前检测它。我相信我的代码就是这样做的,单独检测特性?我理解特定库的好处,但单独加载它们也要付出代价。jQuery似乎是一个很好的折衷方案。根据您的代码,缺少window.JSON
或document.queryselect或all
都会导致1
的flag
值相同。至于单独的文件,没有什么可以阻止您将两个JS库合并到一个文件中;总大小将比jQuery的大小(约32KB)小得多(~7.5KB)。一般来说,只要确保独立库的代码片段之间有新行(换行符)就足够了。我相信我的代码就是这样做的,单独检测功能?我理解特定库的好处,但单独加载它们也要付出代价。jQuery似乎是一个很好的折衷方案。根据您的代码,缺少window.JSON
或document.queryselect或all
都会导致1
的flag
值相同。至于单独的文件,没有什么可以阻止您将两个JS库合并到一个文件中;总大小将远小于jQuery的大小(~7.5 KB)。一般来说,只要确保独立库的代码片段之间有新行(换行符)就足够了。在我的例子中,可选jQuery似乎是一个很好的折衷方案。我担心多个http请求的代价(首先是必须的yepnope,然后可能是几个polyfills)。我关心的是多个http请求的成本(首先是必须的yepnope,然后可能是几个polyfills)。