判断浏览器的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 相关文章推荐
用javascript实现给出的盒子的序列是否可连为一矩型
Aug 30 Javascript
jQuery Ajax之load()方法
Oct 12 Javascript
javascript 模式设计之工厂模式详细说明
May 10 Javascript
文本框中禁止非数字字符输入比如手机号码、邮编
Aug 19 Javascript
JavaScript DOM基础
Apr 13 Javascript
javascript实现省市区三级联动下拉框菜单
Nov 17 Javascript
js表单提交和submit提交的区别实例分析
Dec 10 Javascript
AngularJS使用ng-class动态增减class样式的方法示例
May 18 Javascript
angular6的响应式表单的实现
Oct 10 Javascript
Vue 全家桶实现移动端酷狗音乐功能
Nov 16 Javascript
vue 组件开发原理与实现方法详解
Nov 29 Javascript
手把手教你实现 Promise的使用方法
Sep 02 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文件上传类分享
2016/05/15 PHP
PHP的AES加密算法完整实例
2016/07/20 PHP
php注册和登录界面的实现案例(推荐)
2016/10/24 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
2017/09/15 PHP
laravel框架语言包拓展实现方法分析
2019/11/22 PHP
javascript 表单的友好用户体现
2009/01/07 Javascript
jquery 结合C#后台的数组对文章的关键字自动添加链接的代码
2011/07/15 Javascript
国外大牛IE版本检测!现在IE都到9了,IE检测代码
2012/01/04 Javascript
JavaScript中圆括号()和方括号[]的特殊用法疑问解答
2013/08/06 Javascript
jquery ajax,ashx,json的用法总结
2014/02/12 Javascript
jQuery实现指定内容滚动同时左侧或其它地方不滚动的方法
2015/08/08 Javascript
使用JQuery中的trim()方法去掉前后空格
2016/09/16 Javascript
JS异步文件分片断点上传的实现思路
2016/12/25 Javascript
微信小程序 缓存(本地缓存、异步缓存、同步缓存)详解
2017/01/17 Javascript
vue2.0项目中使用Ueditor富文本编辑器示例代码
2017/08/14 Javascript
vue项目中使用lib-flexible解决移动端适配的问题解决
2018/08/23 Javascript
vue实现微信浏览器左上角返回按钮拦截功能
2020/01/18 Javascript
[03:06]3分钟带你回顾DOTA2完美盛典&完美大师赛
2017/12/06 DOTA
[01:01:14]完美世界DOTA2联赛PWL S2 SZ vs Rebirth 第一场 11.21
2020/11/23 DOTA
详细解析Python中__init__()方法的高级应用
2015/05/11 Python
Python中的super()方法使用简介
2015/08/14 Python
Python中列表和元组的相关语句和方法讲解
2015/08/20 Python
windows10系统中安装python3.x+scrapy教程
2016/11/08 Python
使用Pyinstaller的最新踩坑实战记录
2017/11/08 Python
python操作openpyxl导出Excel 设置单元格格式及合并处理代码实例
2019/08/27 Python
python判断两个序列的成员是否一样的实例代码
2020/03/01 Python
python简单实现最大似然估计&amp;scipy库的使用详解
2020/04/15 Python
python实现三种随机请求头方式
2021/01/05 Python
英国名牌服装购物网站:OD’s Designer
2019/09/02 全球购物
MATCHESFASHION澳大利亚/亚太地区:英国时尚奢侈品电商
2020/01/14 全球购物
班级入场式解说词
2014/02/01 职场文书
《童年的发现》教学反思
2014/02/14 职场文书
讲文明树新风公益广告宣传方案
2014/02/25 职场文书
党的群众路线教育实践活动公开承诺书
2014/03/28 职场文书
法律专业求职信
2014/05/24 职场文书
我的中国心演讲稿
2014/09/04 职场文书