常用的检测浏览器的javascript代码

看过Professional.JavaScript.For.Web.Developers这本书的读者应该都觉得这本书讲的很多东西都很实用,很不错。 下面的代码就是书中的一个章节的代码,关于浏览器的检测。
var  sUserAgent  =  navigator.userAgent;
var  fAppVersion  =  parseFloat(navigator.appVersion);

function  compareVersions(sVersion1, sVersion2)  {

    
var aVersion1 = sVersion1.split(".");
    
var aVersion2 = sVersion2.split(".");
    
    
if (aVersion1.length > aVersion2.length) {
        
for (var i=0; i < aVersion1.length - aVersion2.length; i++{
            aVersion2.push(
"0");
        }

    }
 else if (aVersion1.length < aVersion2.length) {
        
for (var i=0; i < aVersion2.length - aVersion1.length; i++{
            aVersion1.push(
"0");
        }
    
    }

    
    
for (var i=0; i < aVersion1.length; i++{
 
        
if (aVersion1[i] < aVersion2[i]) {
            
return -1;
        }
 else if (aVersion1[i] > aVersion2[i]) {
            
return 1;
        }
    
    }

    
    
return 0;

}


var  isOpera  =  sUserAgent.indexOf( " Opera " >   - 1 ;
var  isMinOpera4  =  isMinOpera5  =  isMinOpera6  =  isMinOpera7  =  isMinOpera7_5  =   false ;

if  (isOpera)  {
    
var fOperaVersion;
    
if(navigator.appName == "Opera"{
        fOperaVersion 
= fAppVersion;
    }
 else {
        
var reOperaVersion = new RegExp("Opera (/d+/./d+)");
        reOperaVersion.test(sUserAgent);
        fOperaVersion 
= parseFloat(RegExp["$1"]);
    }


    isMinOpera4 
= fOperaVersion >= 4;
    isMinOpera5 
= fOperaVersion >= 5;
    isMinOpera6 
= fOperaVersion >= 6;
    isMinOpera7 
= fOperaVersion >= 7;
    isMinOpera7_5 
= fOperaVersion >= 7.5;
}


var  isKHTML  =  sUserAgent.indexOf( " KHTML " >   - 1  
              
||  sUserAgent.indexOf( " Konqueror " >   - 1  
              
||  sUserAgent.indexOf( " AppleWebKit " >   - 1
              
var  isMinSafari1  =  isMinSafari1_2  =   false ;
var  isMinKonq2_2  =  isMinKonq3  =  isMinKonq3_1  =  isMinKonq3_2  =   false ;

if  (isKHTML)  {
    isSafari 
= sUserAgent.indexOf("AppleWebKit"> -1;
    isKonq 
= sUserAgent.indexOf("Konqueror"> -1;

    
if (isSafari) {
        
var reAppleWebKit = new RegExp("AppleWebKit//(/d+(?:/./d*)?)");
        reAppleWebKit.test(sUserAgent);
        
var fAppleWebKitVersion = parseFloat(RegExp["$1"]);

        isMinSafari1 
= fAppleWebKitVersion >= 85;
        isMinSafari1_2 
= fAppleWebKitVersion >= 124;
    }
 else if (isKonq) {

        
var reKonq = new RegExp("Konqueror//(/d+(?:/./d+(?:/./d)?)?)");
        reKonq.test(sUserAgent);
        isMinKonq2_2 
= compareVersions(RegExp["$1"], "2.2">= 0;
        isMinKonq3 
= compareVersions(RegExp["$1"], "3.0">= 0;
        isMinKonq3_1 
= compareVersions(RegExp["$1"], "3.1">= 0;
        isMinKonq3_2 
= compareVersions(RegExp["$1"], "3.2">= 0;
    }
 
    
}


var  isIE  =  sUserAgent.indexOf( " compatible " >   - 1  
           
&&  sUserAgent.indexOf( " MSIE " >   - 1
           
&&   ! isOpera;
           
var  isMinIE4  =  isMinIE5  =  isMinIE5_5  =  isMinIE6  =   false ;

if  (isIE)  {
    
var reIE = new RegExp("MSIE (/d+/./d+);");
    reIE.test(sUserAgent);
    
var fIEVersion = parseFloat(RegExp["$1"]);

    isMinIE4 
= fIEVersion >= 4;
    isMinIE5 
= fIEVersion >= 5;
    isMinIE5_5 
= fIEVersion >= 5.5;
    isMinIE6 
= fIEVersion >= 6.0;
}


var  isMoz  =  sUserAgent.indexOf( " Gecko " >   - 1
            
&&   ! isKHTML;

var  isMinMoz1  =  sMinMoz1_4  =  isMinMoz1_5  =   false ;

if  (isMoz)  {
    
var reMoz = new RegExp("rv:(/d+/./d+(?:/./d+)?)");
    reMoz.test(sUserAgent);
    isMinMoz1 
= compareVersions(RegExp["$1"], "1.0">= 0;
    isMinMoz1_4 
= compareVersions(RegExp["$1"], "1.4">= 0;
    isMinMoz1_5 
= compareVersions(RegExp["$1"], "1.5">= 0;
}


var  isNS4  =   ! isIE  &&   ! isOpera  &&   ! isMoz  &&   ! isKHTML 
            
&&  (sUserAgent.indexOf( " Mozilla " ==   0
            
&&  (navigator.appName  ==   " Netscape "
            
&&  (fAppVersion  >=   4.0   &&  fAppVersion  <   5.0 );

var  isMinNS4  =  isMinNS4_5  =  isMinNS4_7  =  isMinNS4_8  =   false ;

if  (isNS4)  {
    isMinNS4 
= true;
    isMinNS4_5 
= fAppVersion >= 4.5;
    isMinNS4_7 
= fAppVersion >= 4.7;
    isMinNS4_8 
= fAppVersion >= 4.8;
}


var  isWin  =  (navigator.platform  ==   " Win32 " ||  (navigator.platform  ==   " Windows " );
var  isMac  =  (navigator.platform  ==   " Mac68K " ||  (navigator.platform  ==   " MacPPC "
            
||  (navigator.platform  ==   " Macintosh " );

var  isUnix  =  (navigator.platform  ==   " X11 " &&   ! isWin  &&   ! isMac;

var  isWin95  =  isWin98  =  isWinNT4  =  isWin2K  =  isWinME  =  isWinXP  =   false ;
var  isMac68K  =  isMacPPC  =   false ;
var  isSunOS  =  isMinSunOS4  =  isMinSunOS5  =  isMinSunOS5_5  =   false ;

if  (isWin)  {
    isWin95 
= sUserAgent.indexOf("Win95"> -1 
              
|| sUserAgent.indexOf("Windows 95"> -1;
    isWin98 
= sUserAgent.indexOf("Win98"> -1 
              
|| sUserAgent.indexOf("Windows 98"> -1;
    isWinME 
= sUserAgent.indexOf("Win 9x 4.90"> -1 
              
|| sUserAgent.indexOf("Windows ME"> -1;
    isWin2K 
= sUserAgent.indexOf("Windows NT 5.0"> -1 
              
|| sUserAgent.indexOf("Windows 2000"> -1;
    isWinXP 
= sUserAgent.indexOf("Windows NT 5.1"> -1 
              
|| sUserAgent.indexOf("Windows XP"> -1;
    isWinNT4 
= sUserAgent.indexOf("WinNT"> -1 
              
|| sUserAgent.indexOf("Windows NT"> -1 
              
|| sUserAgent.indexOf("WinNT4.0"> -1 
              
|| sUserAgent.indexOf("Windows NT 4.0"> -1 
              
&& (!isWinME && !isWin2K && !isWinXP);
}
 

if  (isMac)  {
    isMac68K 
= sUserAgent.indexOf("Mac_68000"> -1 
               
|| sUserAgent.indexOf("68K"> -1;
    isMacPPC 
= sUserAgent.indexOf("Mac_PowerPC"> -1 
               
|| sUserAgent.indexOf("PPC"> -1;  
}


if  (isUnix)  {
    isSunOS 
= sUserAgent.indexOf("SunOS"> -1;

    
if (isSunOS) {
        
var reSunOS = new RegExp("SunOS (/d+/./d+(?:/./d+)?)");
        reSunOS.test(sUserAgent);
        isMinSunOS4 
= compareVersions(RegExp["$1"], "4.0">= 0;
        isMinSunOS5 
= compareVersions(RegExp["$1"], "5.0">= 0;
        isMinSunOS5_5 
= compareVersions(RegExp["$1"], "5.5">= 0;
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值