判断浏览器的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版本有一个特殊处理。
相关文章
- JavaScript交互式网页设计 • 【第3章 JavaScript浏览器对象模型】
- Kotlin新增协程、类型别名特性,提升了对JavaScript的支持详解手机开发
- JavaScript正则判断浏览器是否为手机浏览器做跳转代码详解编程语言
- Javascript 判断浏览器版本和名称详解编程语言
- javascript之更有效率的字符串替换
- javascript字符串连接的性能问题(多浏览器)
- JavaScript基础问答三
- JavaScript入门教程(4)js浏览器对象
- JavaScript全面解析各种浏览器网页中的JS执行顺序
- JavaScript开发中规范性的一点感想
- Javascript区别浏览器代码
- 有道JavaScript监听浏览器的问题
- JavaScript操作键盘的Enter事件(键盘任何事件),兼容多浏览器
- javascript设为首页与加入收藏兼容多浏览器代码
- Javascript异步加载详解(浏览器在javascript的加载方式)
- Javascript加载速度慢的解决方案
- javascript获取浏览器类型和版本的方法(js获取浏览器版本)
- javascript的解析执行顺序在各个浏览器中的不同
- javascript怎么禁用浏览器后退按钮
- javascript浏览器兼容教程之事件处理
- JavaScript修改浏览器tab标题小技巧
- javascript检查浏览器是否支持flash的实现代码