昨天写了段javascript判断浏览器的脚本,在自己机器上ie6,7,8,360浏览器,火狐,谷歌,遨游,腾讯TT,safari,opera,搜狗告诉浏览器都通过了,但是给别人测试的时候说没通过,请大家帮我测试分析下,另外,请教怎么用js判断世界之窗浏览器,其agent信息和IE完全一模一样,不知道怎么判断
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript"> 
function getbrowser(){
if(navigator.userAgent.indexOf("Firefox")>0)
{
     alert("你用的是火狐浏览器");
}
else
{
if(navigator.userAgent.indexOf("Maxthon")>0||navigator.appName != "Microsoft Internet Explorer")
{

if(navigator.userAgent.indexOf("Chrome")>0)
{
      alert("你用的是谷歌浏览器");
}
else
{
if(navigator.userAgent.indexOf("Safari")>0)
{
      alert("你用的是Safari");
}
else
{
if(navigator.userAgent.indexOf("Opera")>=0)
{
      alert("你用的浏览器是Opera");
}
else
{
alert("你用的是遨游浏览器");
}
}
}

}
else
{
  if(navigator.appName == "Microsoft Internet Explorer")    
     {    
         if(navigator.appVersion.match(/6./i)=='6.')    
         {
alert("你的IE浏览器版本太老了,换个新的吧");  
      } 
  else
{
if(navigator.appVersion.match(/7./i)=='7.')
{
if(navigator.userAgent.indexOf("360SE")>0){
      alert("你用的是360浏览器");
}
else
{
if(navigator.userAgent.indexOf("TencentTraveler")>0)
{
      alert("你用的是TT");
}
else
{
if(navigator.userAgent.indexOf("SE")>0){
      alert("你用的是搜狗浏览器");
}
else
{
alert("你用的是IE7");
}
}
}
}
else
{
alert("你的IE既不是6,也不是7,那应该是8了,或者是过时了10年的5.5");
}
}
     }  
}
}if(navigator.userAgent.indexOf("TheWorld")>0){
     alert("世界之窗浏览器");
}
}
</script> 
</head><body onload="getbrowser()">
</body>
</html>

解决方案 »

  1.   


    function detectBrower()   
    ...{    
        var sUserAgent = navigator.userAgent;    
        var isOpera = sUserAgent.indexOf("Opera") > -1;   
        if(isOpera) return "Opera";   
        var isKHTML = sUserAgent.indexOf("KHTML") > -1 || sUserAgent.indexOf("Konqueror") > -1 || sUserAgent.indexOf("AppleWebKit") > -1;   
        var isSafari = sUserAgent.indexOf("AppleWebKit") > -1 && isKHTML;   
        var isKonq = sUserAgent.indexOf("Konqueror") > -1 && isKHTML;   
        if(isSafari) return "Safari";   
        if(isKonq) return "Konqueror";   
        var isIE = sUserAgent.indexOf("compatible") > -1 && sUserAgent.indexOf("MSIE") > -1 && !isOpera;   
        if(isIE) return "IE";   
        var isMoz = sUserAgent.indexOf("Gecko") > -1 && !isKHTML;   
        if(isMoz) return "Mozilla";   
        return "None";   
    }   
    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lieri111/archive/2010/03/16/5386384.aspx
      

  2.   

    很多内核是一样的浏览器,只能判断一些大的,还未能准确判断每一种,小型的浏览器,想sougou 或者tt浏览器等
      

  3.   

    其实我觉得你每判断一次都要执行一遍这个函数,而浏览器类型那个不是变量,而是常量
    var isIE = /msie/i.test(navigator.userAgent) && !window.opera;
    以后就直接
    if (isIE)
    这样不是更加快???
    非要写一个方法然后每次执行判断?????
      

  4.   

    我这里测试通过啊...
    就是ie浏览器报太老了..
    我的是ie7.0