判断浏览器的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 + Ajax调用webService实例代码(asp.net)
Aug 27 Javascript
Javascript 页面模板化很多人没有使用过的方法
Jun 05 Javascript
密码强度检测效果实现原理与代码
Jan 04 Javascript
jquery的相对父元素和相对文档定位示例代码
Aug 02 Javascript
jquery队列queue与原生模仿其实现方法分享
Mar 25 Javascript
jQuery中animate()方法用法实例
Dec 24 Javascript
Angular 2 利用Router事件和Title实现动态页面标题的方法
Aug 23 Javascript
详解从Vue-router到html5的pushState
Jul 21 Javascript
Vue 报错TypeError: this.$set is not a function 的解决方法
Dec 17 Javascript
javascript中contains是否包含功能实现代码(扩展字符、数组、dom)
Apr 07 Javascript
vue项目接口域名动态获取操作
Aug 13 Javascript
基于原生JS封装的Modal对话框插件的示例代码
Sep 09 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 PDO函数库详解
2010/04/27 PHP
浅析PHP页面局部刷新功能的实现小结
2013/06/21 PHP
ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword 'AS'的解决方法
2014/06/25 PHP
PHP实现原比例生成缩略图的方法
2016/02/03 PHP
Zend Framework框架Smarty扩展实现方法
2016/03/22 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
2017/07/19 PHP
php创建类并调用的实例方法
2019/09/25 PHP
PHP如何获取Cookie并实现模拟登录
2020/07/16 PHP
javascript之对系统的toFixed()方法的修正
2007/05/08 Javascript
非常强大的 jQuery.AsyncBox 弹出对话框插件
2011/08/29 Javascript
JQuery+CSS提示框实现思路及代码(纯手工打造)
2013/05/07 Javascript
浅析JavaScript原型继承的陷阱
2013/12/03 Javascript
javascript中cookie对象用法实例分析
2015/01/30 Javascript
JavaScript正则表达式之multiline属性的应用
2015/06/16 Javascript
JavaScript统计网站访问次数的实现代码
2015/11/18 Javascript
你知道setTimeout是如何运行的吗?
2016/08/16 Javascript
微信小程序 富文本转文本实例详解
2016/10/24 Javascript
BootStrap实现响应式布局导航栏折叠隐藏效果(在小屏幕、手机屏幕浏览时自动折叠隐藏)
2016/11/30 Javascript
Bootstrap + AngularJS 实现简单的数据过滤字符查找功能
2017/07/27 Javascript
微信小程序 获取session_key和openid的实例
2017/08/17 Javascript
Vue实现简单分页器
2018/12/29 Javascript
js实现图片跟随鼠标移动效果
2019/10/16 Javascript
layui实现给某一列加点击事件
2019/10/26 Javascript
使用matplotlib中scatter方法画散点图
2019/03/19 Python
基于OpenCV python3实现证件照换背景的方法
2019/03/22 Python
python字符串替换第一个字符串的方法
2019/06/26 Python
详解Python并发编程之创建多线程的几种方法
2019/08/23 Python
Django之choices选项和富文本编辑器的使用详解
2020/04/01 Python
Python Web项目Cherrypy使用方法镜像
2020/11/05 Python
经典c++面试题五
2014/12/17 面试题
硕士研究生自我鉴定
2013/11/08 职场文书
资助贫困学生倡议书
2014/05/16 职场文书
节约用水的口号
2014/06/20 职场文书
诚实守信演讲稿
2014/09/01 职场文书
幼儿学前班评语
2014/12/29 职场文书
2015年数学教研工作总结
2015/07/22 职场文书