判断浏览器的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 相关文章推荐
JS控件autocomplete 0.11演示及下载 1月5日已更新
Jan 09 Javascript
前端开发的开始---基于面向对象的Ajax类
Sep 17 Javascript
改写一个简单的菜单 弹性大小
Dec 02 Javascript
深入理解jQuery中的事件冒泡
May 24 Javascript
JavaScript中的遍历详解(多种遍历)
Apr 07 Javascript
解决Vue2.0自带浏览器里无法打开的原因(兼容处理)
Jul 28 Javascript
JS一个简单的注册页面实例
Sep 05 Javascript
新年快乐! javascript实现超级炫酷的3D烟花特效
Jan 30 Javascript
浅谈一种让小程序支持JSX语法的新思路
Jun 16 Javascript
layui输入框只允许输入中文且判断长度的例子
Sep 18 Javascript
javascript前端和后台进行数据交互方法示例
Aug 07 Javascript
Nuxt 嵌套路由nuxt-child组件用法(父子页面组件的传值)
Nov 05 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中使用Sockets 从Usenet中获取文件
2008/01/10 PHP
php正则表达式使用的详细介绍
2013/04/27 PHP
javascript 无提示关闭窗口脚本
2009/08/17 Javascript
jQuery之$(document).ready()使用介绍
2012/04/05 Javascript
js自定义事件及事件交互原理概述(一)
2013/02/01 Javascript
使用Grunt.js管理你项目的应用说明
2013/04/24 Javascript
几种延迟加载JS代码的方法加快网页的访问速度
2013/10/12 Javascript
JS正则子匹配实例分析
2016/12/22 Javascript
react-redux中connect()方法详细解析
2017/05/27 Javascript
详解React native全局变量的使用(跨组件的通信)
2017/09/07 Javascript
微信小程序实现给嵌套template模板传递数据的方式总结
2017/12/18 Javascript
详解vue中async-await的使用误区
2018/12/05 Javascript
vue.js仿hover效果的实现方法示例
2019/01/28 Javascript
微信小程序实现搜索历史功能
2020/03/26 Javascript
深入浅析nuxt.js基于ssh的vue通用框架
2019/05/21 Javascript
javascript二维数组和对象的深拷贝与浅拷贝实例分析
2019/10/26 Javascript
Vue自动构建发布脚本的方法示例
2020/07/24 Javascript
关于你不想知道的所有Python3 unicode特性
2014/11/28 Python
python版本的读写锁操作方法
2016/04/25 Python
python3+PyQt5实现文档打印功能
2018/04/24 Python
使用matplotlib画散点图的方法
2018/05/25 Python
numpy.where() 用法详解
2019/05/27 Python
python爬虫 2019中国好声音评论爬取过程解析
2019/08/26 Python
在Pytorch中计算自己模型的FLOPs方式
2019/12/30 Python
Python unittest工作原理和使用过程解析
2020/02/24 Python
PyQt5如何将.ui文件转换为.py文件的实例代码
2020/05/26 Python
使用Numpy对特征中的异常值进行替换及条件替换方式
2020/06/08 Python
Kingsoft金山公司C/C++笔试题
2016/05/10 面试题
某IT外企面试题-二分法求方程!看看大家的C++功底
2015/07/04 面试题
ShellScript面试题一则-ShellScript编程
2014/03/05 面试题
Linux面试经常问的文件系统操作命令
2015/11/05 面试题
入党思想汇报
2014/01/05 职场文书
校园公益广告语
2014/03/13 职场文书
小学毕业寄语大全
2014/04/03 职场文书
优秀团员主要事迹材料
2015/11/05 职场文书
Log4j.properties配置及其使用
2021/08/02 Java/Android