判断浏览器的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 相关文章推荐
从零学JSON之JSON数据结构
May 19 Javascript
JS正则表达式判断有效数实例代码
Mar 13 Javascript
详解vue2 $watch要注意的问题
Sep 08 Javascript
简单谈谈CommonsChunkPlugin抽取公共模块
Dec 31 Javascript
cropper js基于vue的图片裁剪上传功能的实现代码
Mar 01 Javascript
Vue+mui实现图片的本地缓存示例代码
May 24 Javascript
微信小程序如何使用云开发
May 17 Javascript
vue store之状态管理模式的详细介绍
Jun 13 Javascript
Jquery动态列功能完整实例
Aug 30 jQuery
浅谈vue限制文本框输入数字的正确姿势
Sep 02 Javascript
vue实现手机端省市区区域选择
Sep 27 Javascript
p5.js临摹旋转爱心
Oct 23 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常用函数小技巧
2008/09/11 PHP
php5.5中类级别的常量使用介绍
2013/10/02 PHP
PHP 之 写时复制介绍(Copy On Write)
2014/05/13 PHP
php提示Warning:mysql_fetch_array() expects的解决方法
2014/12/16 PHP
php gd等比例缩放压缩图片函数
2016/06/12 PHP
用jQuery简化JavaScript开发分析
2009/02/19 Javascript
Javascript 类、命名空间、代码组织代码
2011/07/31 Javascript
这些年、我收集的JQuery代码小结
2012/08/01 Javascript
让JavaScript和其它资源并发下载的方法
2014/10/16 Javascript
Javascript学习指南
2014/12/01 Javascript
通过AngularJS实现图片上传及缩略图展示示例
2017/01/03 Javascript
使用JS在浏览器中判断当前网络连接状态的几种方法
2017/05/05 Javascript
jquery replace方法去空格
2017/05/08 jQuery
vue 动态改变静态图片以及请求网络图片的实现方法
2018/02/07 Javascript
vue+mousemove实现鼠标拖动功能(拖动过快失效问题解决方法)
2018/08/24 Javascript
vue2.0移动端滑动事件vue-touch的实例代码
2018/11/27 Javascript
[47:04]EG vs RNG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
Python实现图片尺寸缩放脚本
2018/03/10 Python
Flask Web开发入门之文件上传(八)
2018/08/17 Python
Linux下远程连接Jupyter+pyspark部署教程
2019/06/21 Python
Django Admin中增加导出CSV功能过程解析
2019/09/04 Python
Flask中endpoint的理解(小结)
2019/12/11 Python
python pptx复制指定页的ppt教程
2020/02/14 Python
Pyinstaller加密打包应用的示例代码
2020/06/11 Python
详解Scrapy Redis入门实战
2020/11/18 Python
英国最大的网上药品商店:Chemist Direct
2017/12/16 全球购物
家庭睡衣和家庭用品:Little Blue House
2018/03/18 全球购物
小学生学习雷锋倡议书
2014/05/15 职场文书
世博会口号
2014/06/20 职场文书
小学学校门卫岗位职责
2014/08/03 职场文书
无刑事犯罪记录证明范本
2014/09/29 职场文书
市贸粮局召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
2015年组织部工作总结
2015/04/03 职场文书
《地震中的父与子》教学反思
2016/02/16 职场文书
2019奶茶店创业计划书范本!
2019/07/15 职场文书
Java结构型设计模式之组合模式详解
2022/09/23 Java/Android