判断浏览器的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 相关文章推荐
JQuery为textarea添加maxlength属性的代码
Apr 07 Javascript
面向对象的Javascript之二(接口实现介绍)
Jan 27 Javascript
js获取当月最后一天实例代码
Nov 19 Javascript
学习JavaScript设计模式之模板方法模式
Jan 20 Javascript
客户端验证用户名和密码的方法详解
Jun 16 Javascript
简单实现js无缝滚动效果
Feb 05 Javascript
Angular.js自动化测试之protractor详解
Jul 07 Javascript
基于node.js的fs核心模块读写文件操作(实例讲解)
Sep 10 Javascript
旺旺在线客服代码 旺旺客服代码生成器
Jan 09 Javascript
基于vue-router 多级路由redirect 重定向的问题
Sep 03 Javascript
我要点爆”微信小程序云开发之项目建立与我的页面功能实现
May 26 Javascript
node.js实现带进度条的多文件上传
Mar 27 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
Parse正式发布开源PHP SDK
2014/08/11 PHP
PHP利用Socket获取网站的SSL证书与公钥
2017/06/18 PHP
javascript innerHTML、outerHTML、innerText、outerText的区别
2008/11/24 Javascript
jQuery 方法大全方便学习参考
2010/02/25 Javascript
jquery 学习之一 对象访问
2010/11/23 Javascript
深入理解JSON数据源格式
2014/01/10 Javascript
js用闭包遍历树状数组的方法
2014/03/19 Javascript
jquery获取选中的文本和值的方法
2014/07/08 Javascript
深入理解JavaScript系列(35):设计模式之迭代器模式详解
2015/03/03 Javascript
javascript实现设置、获取和删除Cookie的方法
2015/06/01 Javascript
javascript封装的sqlite操作类实例
2015/07/17 Javascript
11种ASP连接数据库的方法
2015/09/18 Javascript
jquery实现左右无缝轮播图
2020/07/31 Javascript
jQuery遍历节点方法汇总(推荐)
2017/05/13 jQuery
基于JavaScript实现带数据验证和复选框的表单提交
2017/08/23 Javascript
详解vue中使用axios对同一个接口连续请求导致返回数据混乱的问题
2019/11/06 Javascript
python分割文件的常用方法
2014/11/01 Python
python实现用户管理系统
2018/01/10 Python
Python+OpenCV实现车牌字符分割和识别
2018/03/31 Python
Python画图实现同一结点多个柱状图的示例
2019/07/07 Python
Python+opencv+pyaudio实现带声音屏幕录制
2019/12/23 Python
python如何实现不可变字典inmutabledict
2020/01/08 Python
python中Django文件上传方法详解
2020/08/05 Python
Django用内置方法实现简单搜索功能的方法
2020/12/18 Python
泰国最新活动和优惠:Megatix
2020/05/07 全球购物
学习十八大宣传标语
2014/10/09 职场文书
鸟的天堂导游词
2015/01/31 职场文书
一百条裙子读书笔记
2015/07/01 职场文书
社区志愿服务活动感想
2015/08/07 职场文书
mysql在项目中怎么选事务隔离级别
2021/05/25 MySQL
使用goaccess分析nginx日志的详细方法
2021/07/09 Servers
详解JAVA的控制语句
2021/11/11 Java/Android
Lakehouse数据湖并发控制陷阱分析
2022/03/31 Oracle
Python写情书? 10行代码展示如何把情书写在她的照片里
2022/04/21 Python
php解析非标准json、非规范json的方式实例
2022/05/10 PHP
基于Python实现西西成语接龙小助手
2022/08/05 Golang