判断浏览器的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 相关文章推荐
Prototype 1.5.0_rc1 及 Prototype 1.5.0 Pre0小抄本
Sep 22 Javascript
用最通俗易懂的代码帮助新手理解javascript闭包 推荐
Mar 01 Javascript
Jquery easyui 下loaing效果示例代码
Aug 12 Javascript
点击表单提交时出现jQuery没有权限的解决方法
Jul 23 Javascript
javascript实现根据时间段显示问候语的方法
Jun 18 Javascript
jQuery mobile的header和footer在点击屏幕的时候消失的解决办法
Jul 01 Javascript
js插件dropload上拉下滑加载数据实例解析
Jul 27 Javascript
js阻止移动端页面滚动的两种方法
Jan 25 Javascript
Vue.js标签页组件使用方法详解
Oct 19 Javascript
JS实现横向跑马灯效果代码
Apr 20 Javascript
基于JS+HTML实现弹窗提示是否确认提交功能
Jun 17 Javascript
jquery简易手风琴插件的封装
Oct 13 jQuery
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 curl的深入解析
2013/06/02 PHP
PHP利用REFERER根居访问来地址进行页面跳转
2013/09/28 PHP
PHP7导出Excel报ERR_EMPTY_RESPONSE解决方法
2019/04/16 PHP
Yii框架多语言站点配置方法分析【中文/英文切换站点】
2020/04/07 PHP
Javascript堆排序算法详解
2014/12/03 Javascript
jquery动态添加删除(tr/td)
2015/02/09 Javascript
jQuery easyUI datagrid 增加求和统计行的实现代码
2016/06/01 Javascript
Bootstrap基本插件学习笔记之折叠(22)
2016/12/08 Javascript
JavaScript组件开发之输入框加候选框
2017/03/10 Javascript
vue项目部署上线遇到的问题及解决方法
2018/06/10 Javascript
vue的过滤器filter实例详解
2018/09/17 Javascript
koa+mongoose实现简单增删改查接口的示例代码
2019/05/13 Javascript
JavaScript前端开发时数值运算的小技巧
2020/07/28 Javascript
[02:51]2018年度DOTA2最佳中单位选手-完美盛典
2018/12/17 DOTA
使用Python编写一个简单的tic-tac-toe游戏的教程
2015/04/16 Python
python3实现UDP协议的服务器和客户端
2017/06/14 Python
python抓取网页中链接的静态图片
2018/01/29 Python
使用pandas对矢量化数据进行替换处理的方法
2018/04/11 Python
Python实现EXCEL表格的排序功能示例
2019/06/25 Python
在pytorch中对非叶节点的变量计算梯度实例
2020/01/10 Python
DRF使用simple JWT身份验证的实现
2021/01/14 Python
Python自动化测试基础必备知识点总结
2021/02/07 Python
open_basedir restriction in effect. 原因与解决方法
2021/03/14 PHP
CSS 3.0文字悬停跳动特效代码
2020/10/26 HTML / CSS
《望洞庭》教学反思
2014/02/16 职场文书
上课说话检讨书
2015/01/27 职场文书
考研英语辞职信
2015/05/13 职场文书
大国崛起观后感
2015/06/02 职场文书
小学生手册家长意见
2015/06/03 职场文书
本科毕业论文答辩稿
2015/06/23 职场文书
2016年校园重阳节广播稿
2015/12/18 职场文书
教师学习中国梦心得体会
2016/01/05 职场文书
加薪申请书应该这样写!
2019/07/04 职场文书
创业计划书之香辣虾火锅
2019/09/23 职场文书
Html5大屏数据可视化开发的实现
2021/06/11 HTML / CSS
python中的random模块和相关函数详解
2022/04/22 Python