zl程序教程

您现在的位置是:首页 >  前端

当前栏目

判断浏览器的javascript版本的代码

2023-06-13 09:14:24 时间
他老人家说将所要执行的代码放在如<scriptlanguage="JavaScript1.2">所示嵌套下。但是当问到检测javascript版本时,得到如下代码:
复制代码代码如下:

varJS_ver=[];
(Number.prototype.toFixed)?JS_ver.push("1.5"):false;
([].indexOf&&[].forEach)?JS_ver.push("1.6"):false;
((function(){try{[a,b]=[0,1];returntrue;}catch(ex){returnfalse;}})())?JS_ver.push("1.7"):false;
([].reduce&&[].reduceRight&&JSON)?JS_ver.push("1.8"):false;
("".trimLeft)?JS_ver.push("1.8.1"):false;
JS_ver.supports=function()
{
if(arguments[0])
return(!!~this.join().indexOf(arguments[0]+",")+",");
else
return(this[this.length-1]);
}
alert("LatestJavascriptversionsupported:"+JS_ver.supports());
alert("Supportforversion1.7:"+JS_ver.supports("1.7"));

这个脚本,既能通过检测特征来检测JavaScript版本,还能检查特定的Javascript版本所支持的特性。
得到了结果,我们还是看下此系统是如何检测javascript版本的吧,于是将其代码抽取出来(抽取过程相当纠结),得到如下所示代码:
复制代码代码如下:

<scripttype="text/javascript">
varn=navigator;
varu=n.userAgent;
varapn=n.appName;
varv=n.appVersion;
varie=v.indexOf("MSIE")
if(ie>0){
apv=parseInt(i=v.substring(ie+5));
if(apv>3){
apv=parseFloat(i);
}
}else{
apv=parseFloat(v);
}
varisie=(apn=="MicrosoftInternetExplorer");
varismac=(u.indexOf("Mac")>=0);
varjavascriptVersion="1.0";
if(String&&String.prototype){
javascriptVersion="1.1";
if(javascriptVersion.match){
javascriptVersion="1.2";
vartm=newDate;
if(tm.setUTCDate){
javascriptVersion="1.3";
if(isie&&ismac&&apv>=5)javascriptVersion="1.4";
varpn=0;
if(pn.toPrecision){
javascriptVersion="1.5";
a=newArray;
if(a.forEach){
javascriptVersion="1.6";
i=0;
o=newObject;
tcf=newFunction("o","vare,i=0;try{i=newIterator(o)}catch(e){}returni");
i=tcf(o);
if(i&&i.next){
javascriptVersion="1.7";
}
}
}
}
}
}
alert(javascriptVersion);
</script>

代码实现原理:根据不同版本的javascript对于一些特定函数的支持不同从而判断其版本所在。其中仅对1.4版本有一个特殊处理。