您的位置:首页 > 程序相关 > 如何判断浏览器的javascript版本

如何判断浏览器的javascript版本

如何判断浏览器的javascript版本

话说最近在研究某著名跟踪系统,在其给用户的实施代码中有一段判断浏览器Javascript版本的代码引起了我的注意,于是问了下google如何判断浏览器的javascript版本,他老人家说将所要执行的代码放在如< script language="JavaScript1.2" >所示嵌套下。但是当问到检测javascript版本时,得到如下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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版本的吧,于是将其代码抽取出来(抽取过程相当纠结),得到如下所示代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<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版本有一个特殊处理。

–EOF–

本文地址:如何判断浏览器的javascript版本    文章出处:PHP源码阅读,PHP设计模式,PHP学习笔记,项目管理-胖胖的空间

转载请以链接形式注明原始出处和作者,谢绝不尊重版权者抄袭!

2 条留言我要留言

  •   1 - xiaokai  |  2010-09-01 at 9:43 am  

    判断javascript版本干啥?

  •   2 - 胖子  |  2010-09-01 at 10:35 am  

    貌似仅在跟踪统计中有用到,其它的时候就直接判断对象了

必填

必填,绝不公开

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word