从所周知,浏览器的种类多的不计其数,其解释引擎也各不相同。历史上已经有不少方法来解决浏览器兼容问题了,主要分为两种:1.userAgent字符串检测,2.对象检测;当然,也不能考虑所有的浏览器,只要考虑主流浏览器即可,下面是市场上的主流浏览器列表:

  • Internet Explorer
  • Mozilla Firefox
  • Google Chrome
  • Opera
  • Safari

  当然,市场上还存在一些其它浏览器,但由于它们都是使用的上面所列浏览器的核心,或与上面浏览器使用了相同的解释引擎,所以无需多作考虑。下面是主流的浏览器解释引擎列表:

  • Trident(又称为MSHTML):IE,TheWorld,MiniIE,Maxthon,腾讯TT等浏览器
  • Gecko(壁虎):Firefox、Mozilla Suite、Camino,Seamonkey等浏览器
  • Presto:Presto是一个由Opera Software开发的浏览器排版引擎
  • KHTML:Safari和Google Chrome

利用userAgent检测

  userAgent是浏览器的用户代理字符串,下面是个浏览器的userAgent的字符串值:

  • IE浏览器:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)
  • 火狐浏览器:Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4
  • Opera浏览器:Opera/9.64 (Windows NT 5.1; U; Edition IBIS; zh-cn) Presto/2.1.1
  • Safari浏览器:Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16
  • Google Chrome浏览器:Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.33 Safari/530.5

  可以这样进行浏览器检测

var Browser = {  

     isIE:navigator.userAgent.indexOf("MSIE")!=-1,  

    isFF:navigator.userAgent.indexOf("Firefox")!=-1,  

    isOpera:navigator.userAgent.indexOf("Opera")!=-1,  

     isSafari:navigator.userAgent.indexOf("Safari")!=-1  

}; 

  这样虽然能检测浏览器,但还是不够全面,因为有的浏览器会通过userAgent伪装自己。通常的做法是检测浏览器的解释引擎,正确的解决方案:

var Browser = {  

        isIE:navigator.userAgent.indexOf("MSIE")>-1 && !window.opera,  

        isGecko:navigator.userAgent.indexOf("Gecko")>-1 && !window.opera   

        && navigator.userAgent.indexOf("KHTML") ==-1,  

        isKHTML:navigator.userAgent.indexOf("KHTML")>-1,  

        isOpera:navigator.userAgent.indexOf("Opera")>-1  

}; 

  

 posted on 2011-07-23 12:30  Mr·H  阅读(1166)  评论(2编辑  收藏  举报