判断浏览器的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 相关文章推荐
关于可运行代码无法正常执行的使用说明
May 13 Javascript
使用jquery hover事件实现表格的隔行换色功能示例
Sep 03 Javascript
Javasipt:操作radio标签详解
Dec 30 Javascript
JavaScript实现在数组中查找不同顺序排列的字符串
Sep 26 Javascript
谈谈encodeURI和encodeURIComponent以及escape的区别与应用
Nov 24 Javascript
js中的关联数组与普通数组详解
Jul 27 Javascript
Javascript 数组去重的方法(四种)详解及实例代码
Nov 24 Javascript
Google 爬虫如何抓取 JavaScript 的内容
Apr 07 Javascript
详解如何用模块化的方式写vuejs
Dec 16 Javascript
详解layui中的树形关于取值传值问题
Jan 16 Javascript
JavaScript函数式编程(Functional Programming)声明式与命令式实例分析
May 21 Javascript
js实现盒子滚动动画效果
Aug 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中feof()函数实例测试
2014/08/23 PHP
PHP动态规划解决0-1背包问题实例分析
2015/03/23 PHP
PHP防止刷新重复提交页面的示例代码
2015/11/11 PHP
浅谈Coreseek、Sphinx-for-chinaese、Sphinx+Scws的区别
2016/12/15 PHP
Thinkphp5行为使用方法汇总
2017/12/21 PHP
javascript编程起步(第一课)
2007/01/10 Javascript
用Javascript实现锚点(Anchor)间平滑跳转
2009/09/08 Javascript
stream.js 一个很小、完全独立的Javascript类库
2011/10/28 Javascript
javascript错误的认识不用关心内存管理
2012/12/15 Javascript
深入理解Javascript中this的作用域
2014/08/12 Javascript
JS版微信6.0分享接口用法分析
2016/10/13 Javascript
JavaScript实现星级评分
2017/01/12 Javascript
vue 项目中使用Loading组件的示例代码
2018/08/31 Javascript
在Vue中用canvas实现二维码和图片合成海报的方法
2019/06/10 Javascript
详解微信小程序支付流程与梳理
2019/07/16 Javascript
vue中使用element ui的弹窗与echarts之间的问题详解
2019/10/25 Javascript
使用Vant完成Dialog弹框案例
2020/11/11 Javascript
python 实现一个贴吧图片爬虫的示例
2017/10/12 Python
python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中
2019/08/24 Python
解决python DataFrame 打印结果不换行问题
2020/04/09 Python
python实现发送QQ邮件(可加附件)
2020/12/23 Python
利用CSS3实现文字折纸效果实例代码
2018/07/10 HTML / CSS
html5画布旋转效果示例
2014/01/27 HTML / CSS
英国广泛的照明产品网站:Lights4living
2018/01/28 全球购物
时尚设计师手表:The Watch Cabin
2018/10/06 全球购物
瑞士最大的图书贸易公司:Orell Füssli
2019/12/28 全球购物
自荐信如何“自荐”
2013/10/24 职场文书
新学期开学演讲稿
2014/05/24 职场文书
生产车间标语
2014/06/11 职场文书
三方股东合作协议书范本
2014/09/28 职场文书
财务出纳岗位职责
2015/03/31 职场文书
工厂门卫岗位职责
2015/04/13 职场文书
礼仪培训心得体会
2016/01/22 职场文书
2019感恩宣传标语!
2019/07/05 职场文书
JavaScript组合继承详解
2021/11/07 Javascript
Python+pyaudio实现音频控制示例详解
2022/07/23 Python