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


Posted in Javascript onSeptember 03, 2010

他老人家说将所要执行的代码放在如< script language="JavaScript1.2" >所示嵌套下。但是当问到检测javascript版本时,得到如下代码:

var JS_ver = []; 
(Number.prototype.toFixed)?JS_ver.push("1.5"):false; 
([].indexOf && [].forEach)?JS_ver.push("1.6"):false; 
((function(){try {[a,b] = [0,1];return true;}catch(ex) {return false;}})())?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("Latest Javascript version supported: "+ JS_ver.supports()); 
alert("Support for version 1.7 : "+ JS_ver.supports("1.7"));

这个脚本,既能通过检测特征来检测JavaScript版本,还能检查特定的Javascript版本所支持的特性。
得到了结果,我们还是看下此系统是如何检测javascript版本的吧,于是将其代码抽取出来(抽取过程相当纠结),得到如下所示代码:
<script type="text/javascript"> 
var n = navigator; 
var u = n.userAgent; 
var apn = n.appName; 
var v = n.appVersion; 
var ie = v.indexOf('MSIE ') 
if(ie > 0){ 
apv = parseInt(i = v.substring(ie + 5)); 
if(apv > 3) { 
apv = parseFloat(i); 
} 
}else{ 
apv = parseFloat(v); 
} 
var isie = (apn == 'Microsoft Internet Explorer'); 
var ismac = (u.indexOf('Mac') >= 0); 
var javascriptVersion = "1.0"; 
if(String && String.prototype){ 
javascriptVersion = '1.1'; 
if(javascriptVersion.match){ 
javascriptVersion = '1.2'; 
var tm = new Date; 
if(tm.setUTCDate){ 
javascriptVersion = '1.3'; 
if(isie && ismac && apv >= 5) javascriptVersion = '1.4'; 
var pn = 0; 
if(pn.toPrecision){ 
javascriptVersion = '1.5'; 
a = new Array; 
if(a.forEach){ 
javascriptVersion = '1.6'; 
i = 0; 
o = new Object; 
tcf = new Function('o','var e,i=0;try{i=new Iterator(o)}catch(e){}return i'); 
i = tcf(o); 
if(i && i.next) { 
javascriptVersion = '1.7'; 
} 
} 
} 
} 
} 
} 
alert(javascriptVersion); 
</script>

代码实现原理:根据不同版本的javascript对于一些特定函数的支持不同从而判断其版本所在。其中仅对1.4版本有一个特殊处理。
Javascript 相关文章推荐
AJAX的跨域与JSONP(为文章自动添加短址的功能)
Jan 17 Javascript
jQuery获取Select选择的Text和Value(详细汇总)
Jan 25 Javascript
原始的js代码和jquery对比体会
Sep 10 Javascript
jQuery菜单插件用法实例
Jul 25 Javascript
浅谈JavaScript中的分支结构
Jul 01 Javascript
关于HTTP传输中gzip压缩的秘密探索分析
Jan 12 Javascript
用vuex写了一个购物车H5页面的示例代码
Dec 04 Javascript
jQuery实现的点击图片居中放大缩小功能示例
Jan 16 jQuery
微信小程序上传多图到服务器并获取返回的路径
May 05 Javascript
vue父组件给子组件的组件传值provide inject的方法
Oct 23 Javascript
微信分享invalid signature签名错误踩过的坑
Apr 11 Javascript
Openlayers绘制地图标注
Sep 28 Javascript
Extjs中DisplayField的日期或者数字格式化扩展
Sep 03 #Javascript
JavaScript的类型简单说明
Sep 03 #Javascript
JavaScript类和继承 this属性使用说明
Sep 03 #Javascript
JavaScript类和继承 prototype属性
Sep 03 #Javascript
用Javascript实现Sleep暂停功能代码
Sep 03 #Javascript
javascript 仿QQ滑动菜单效果代码
Sep 03 #Javascript
原生javascript实现图片轮播效果代码
Sep 03 #Javascript
You might like
虫族 Zerg 热键控制
2020/03/14 星际争霸
2020显卡排行榜天梯图 显卡天梯图2020年3月最新版
2020/04/02 数码科技
谈谈新手如何学习PHP
2006/12/14 PHP
PHP的curl实现get,post和cookie(实例介绍)
2013/06/17 PHP
WordPress中注册菜单与调用菜单的方法详解
2015/12/18 PHP
js获取图片长和宽度的代码
2009/11/24 Javascript
jsTree 基于JQuery的排序节点 Bug
2011/07/26 Javascript
jQuery fadeTo方法调整图片的透明度使用介绍
2013/05/06 Javascript
JS+flash实现chrome和ie浏览器下同时可以复制粘贴
2013/09/22 Javascript
微信小程序 支付功能开发错误总结
2017/02/21 Javascript
让你彻底掌握es6 Promise的八段代码
2017/07/26 Javascript
基于ajax和jsonp的原生封装(实例)
2017/10/16 Javascript
vue项目前端埋点的实现
2019/03/06 Javascript
vue自定义switch开关组件,实现样式可自行更改
2019/11/01 Javascript
vue $router和$route的区别详解
2020/12/02 Vue.js
使用python实现baidu hi自动登录的代码
2013/02/10 Python
跟老齐学Python之传说中的函数编写条规
2014/10/11 Python
Python使用time模块实现指定时间触发器示例
2017/05/18 Python
Python RabbitMQ消息队列实现rpc
2018/05/30 Python
Python定义一个跨越多行的字符串的多种方法小结
2018/07/19 Python
python对列进行平移变换的方法(shift)
2019/01/10 Python
python+pygame实现坦克大战
2019/09/10 Python
python实现的读取网页并分词功能示例
2019/10/29 Python
CSS Houdini实现动态波浪纹效果
2019/07/30 HTML / CSS
让ie浏览器成为支持html5的浏览器的解决方法(使用html5shiv)
2014/04/08 HTML / CSS
英国最大的自有市场,比亚马逊便宜:Flubit
2019/03/19 全球购物
奥地利智能家居和智能生活网上商店:tink.at
2019/10/07 全球购物
大二学期个人自我评价
2014/01/13 职场文书
《只有一个地球》教学反思
2014/02/14 职场文书
工程材料采购方案
2014/05/18 职场文书
旅游文化节策划方案
2014/06/06 职场文书
师范类求职信
2014/06/21 职场文书
房屋登记授权委托书范本
2014/10/09 职场文书
2014年人力资源部工作总结
2014/11/19 职场文书
服务员岗位职责范本
2015/04/09 职场文书
天那边观后感
2015/06/09 职场文书