判断浏览器的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 相关文章推荐
理解JavaScript中的事件
Sep 23 Javascript
jquery蒙版控件实现代码
Dec 08 Javascript
Jquery Uploadify上传带进度条的简单实例
Feb 12 Javascript
js实现单击图片放大图片的方法
Feb 17 Javascript
在JavaScript中处理时间之getHours()方法的使用
Jun 10 Javascript
JS上传图片预览插件制作(兼容到IE6)
Aug 07 Javascript
Nginx 配置多站点vhost 的方法
Jan 07 Javascript
JavaScript 有用的代码片段和 trick
Feb 22 Javascript
JavaScript面向对象编程小游戏---贪吃蛇代码实例
May 15 Javascript
JavaScript常用内置对象用法分析
Jul 09 Javascript
Vue表单提交点击事件只允许点击一次的实例
Oct 23 Javascript
一道JS算法面试题——冒泡、选择排序
Apr 21 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
php下使用无限生命期Session的方法
2007/03/16 PHP
php网页标题中文乱码的有效解决方法
2014/03/05 PHP
PHP自定义错误用法示例
2016/09/28 PHP
php字符串操作常见问题小结
2016/10/11 PHP
js 数组的for循环到底应该怎么写?
2010/05/31 Javascript
UI Events 用户界面事件
2012/06/27 Javascript
多引号嵌套的变量命名的问题
2014/05/09 Javascript
Jquery1.9.1源码分析系列(六)延时对象应用之jQuery.ready
2015/11/24 Javascript
javascript的理解及经典案例分析
2016/05/20 Javascript
js实现二级导航功能
2017/03/03 Javascript
浅谈react前后端同构渲染
2017/09/20 Javascript
vue2.0 axios跨域并渲染的问题解决方法
2018/03/08 Javascript
一步步教会你微信小程序的登录鉴权
2018/04/09 Javascript
实例详解Node.js 函数
2018/06/10 Javascript
vue eslint简要配置教程详解
2019/07/26 Javascript
Vue2.X和Vue3.0数据响应原理变化的区别
2019/11/07 Javascript
微信小程序 bindtap 传参的实例代码
2020/02/21 Javascript
jquery实现垂直手风琴菜单
2020/03/04 jQuery
原生JS实现烟花效果
2020/03/10 Javascript
NestJs使用Mongoose对MongoDB操作的方法
2021/02/22 Javascript
Python ftp上传文件
2016/02/13 Python
python中利用队列asyncio.Queue进行通讯详解
2017/09/10 Python
对python文件读写的缓冲行为详解
2019/02/13 Python
Python常用模块之requests模块用法分析
2019/05/15 Python
Python的对象传递与Copy函数使用详解
2019/12/26 Python
Python安装并操作redis实现流程详解
2020/10/13 Python
CSS3的文字阴影—text-shadow的使用方法
2012/12/25 HTML / CSS
英国剑桥包官网:The Cambridge Satchel Company
2016/08/01 全球购物
英国布鲁姆精品店:Bloom Boutique
2018/03/01 全球购物
全球领先的全景影像品牌:Insta360
2019/08/21 全球购物
2019年Java 最常见的 面试题
2016/10/19 面试题
面试后感谢信怎么写
2014/02/01 职场文书
工厂仓管员岗位职责范本
2014/07/17 职场文书
加强作风建设演讲稿
2014/10/24 职场文书
见习报告怎么写
2014/10/31 职场文书
MySQL的安装与配置详细教程
2021/06/26 MySQL