zoukankan      html  css  js  c++  java
  • javascript判断浏览器的版本

    在javascript中直接的使用navigator.userAgent就可以获取当前浏览器的版本等信息,以下是列出来的关于不同浏览器显示的值(Windows、Android、iPhone):
    IE6
     
    IE7
    IE8
    IE9
    Firefox
     
    Chrome
     
    Opera
     
    Safari
     
    Android自带浏览器
     
    Android版Opera Mobile
     
    Android版Firefox
     
    iPhone自带Safari
     
    iPhone版Opera Mobile
     
     
    [总结]
    Windows操作系统浏览器系列:
    • IE浏览器系列:
      特征表现:均以 "mozilla/" 开头,"msie x.0;" 中的x表示其版本;
      判断方法:粗略判断可以只检索 "msie x.0;" 字符串即可,严格判断可检索 "mozilla/x.0 (compatibal; msie x.0; windows nt",不过一般没有这个必要
    • Windows版Firefox:
      特征表现:以"mozilla/x.0"开头,包含"windows nt","gecko/"和"firefox/" ;
      判断方法:粗略判断可以只检索 "firefox/"和"windows nt" 字符串,严格判断可以检索"mozilla/" ,"windows nt","gecko/"和"firefox/" 四个字符串;
    • Windows版Chrome:
      特征表现: 以"mozilla/x.0"开头,包含"windows nt","chrome/",同时包含"applewebkit/","safari/";
      判断方法:粗略判断可以只检索 "windows nt"和"chrome/"字符串,严格判断可以同时检索 "mozilla/" ,"windows nt","applewebkit/","safari/","chrome/" 五个字符串;
    • Windows版Opera:
      特征表现:以"opera/"开头,含有"windows nt","presto/" 字符串;
      判断方法:粗略判断只检索 "windows nt"和"opera/"字符串,严格判断同时检索 "opera/","windows nt" 和 "presto/";
    • Windows版Safari:
      特征表现:以"mozilla/"开头,同时含有"windows nt","applewebkit/","safari/";
      判断方法:粗略判断可以检索含有 "windows nt","safari/" 同时不包含 "chrome/",严格判断需要同时含有"mozilla/","windows nt","applewebkit/","safari/"但是不包含"chrome/";  
    • 小结:Windows操作系统上的浏览器userAgent均包含"windows nt"字符串来表征windows操作系统。
    iPhone平台浏览器系列:
    • iPhone自带safari:
      特征表现:以"mozilla/"开头,含有"iphone"字符串,同时含有 "mobile/","safari/"字符串;
      判断方法:粗略判断只检索 "iphone"和"safari/"字符串,严格判断则要同时包含 "mozilla/","iphone","mobile/","safari/"四个字符串
    • iPhone版Opera Mobile:
      特征表现: 以"opera/"开头,含有"iphone"字符串,同时含有 "opera mini/","presto/"字符串;
      判断方法:粗略判断只检索 "iphone"和"opera/"字符串,严格判断则要同时包含 "opera/","iphone","opera mini/","presto/"四个字符串
    • 小结:iPhone手机上的浏览器userAgent均包含"iphone"字符串
    Android平台浏览器系列:
    • Android自带浏览器(有人说其实是就chrome,但google自己未做表示,且还在开发一个Android上运行的Chrome to Phone):
      特征表现: 以"mozilla/"开头,含有"android"和"linux" 字符串,同时含有 "applewebkit/","mobile safari/"字符串;
      判断方法:因为还不知道Android上未来会不会有独立的safari(估计不会了),所以建议直接严格判断,检索 "mozilla/","android","linux","applewebkit/","mobile safari/"五个字符串
    • Android版Opera Mobile:
      特征表现: 以"opera/"开头,含有"android"和"linux" 字符串,同时含有 "opera mobi/","presto/"字符串;
      判断方法:粗略判断只检索 "android"和"opera/",严格判断则要同时包含"opera/","android","linux","opera mobi/","presto/"五个字符串
    • Android版Firefox:
      特征表现:以"mozilla/"开头,含有"android"和"linux" 字符串,同时含有 "firefox/","gecko/","fennec/"字符串; 
      判断方法:粗略判断只检索 "android"和"firefox/",严格判断则要同时包含"mozilla/","android","linux","firefox/","gecko/","fennec/"六个字符串 
    • 小结:Android平台上的浏览器userAgent均包含"android"和"linux"字符串
    1、如果需要判断操作系统,方法比较简单,在userAgent里面检索以下字符串:
         含有"windows nt":显而易见了,windows操作系统,nt后面的版本号可以判断OS版本;
         含有"mac":苹果的Mac OS X或者其他Mac OS内核的系统;
         含有"iphone":苹果iphone手机专有的,一般情况下也应该含有"mac";
         含有"ipad":苹果iPad平板电脑(资料表明iPad的浏览器userAgent同时含有"mac","iphone","ipad");
         含有"linux":Linux操作系统或者其他以linux作为内核的操作系统;
         含有"android":谷歌的Android操作系统,有可能是智能手机,也有可能是安卓版的平板电脑哦,一般情况下android平台上的userAgent也应该包含"linux";
         含有"unix","sunos","bsd"三者之一:Unix系统,其实对这个系统的用户体验问题,目前几乎可以不用考虑了;
         含有"ubuntu":ubuntu定制版的linux
         你也看到了,判断操作系统及其版本其实并不一直有用,但总有能用到的地方,比如开发专门针对iphone、ipad、android等设备屏幕分辨率的页面
     
    2、判断浏览器的内核,方法也不困难:
          IE(Trident)内核(IE for Mac, IEs4Linux之类的就不用说了,只考虑windows下的):以"mozilla/"开头,含有"windows nt"和"msie"字符串;
          Firefox(Gecko)内核:以"mozilla/"开头,含有"firefox/"和"gecko/"字符串的就是啦,其中Android版的还带有"fennec/"字符串;
          Opera内核:以"opera/"开头,含有"presto/"字符串,其中iphone版还带有"opera mini/",Android版也带有"opera mobi/";
          Webkit内核:以"mozilla/"开头,含有"applewebkit/"和"safari/"字符串,其中带有"chrome/"的就是Chrome浏览器,不带的就是Safari或其他;
         浏览器内核才是解决兼容性的关键问题所在,然而,这个兼容性问题已经有jQuery和Extjs等框架帮你解决了,因此这个判断只针对个别页面的CSS样式在不同内核渲染效果不同的情况下使用,当然了,同样的内核在智能手机和电脑等不同设备上渲染结果也不同,这一点也需要注意。
     
     
     
     
    navigator.appVersion

     转自珠峰周啸天

  • 相关阅读:
    SQL注入攻击三部曲之进阶篇
    SQL注入攻击三部曲之入门篇
    父页面(JSP页面)传参数到子页面(JSP页面)
    Flex弹出窗口请求Action函数
    dojo表格分页插件报错
    堆栈溢出问题 调试到位置(test dword ptr [eax],eax ; probe page.)局部数组变量定义所分配的最大空间为1M
    改装的表格
    FusionCharts饼图中label值太长怎么解决
    dojo中的dojox/grid/EnhancedGrid表格报错
    dojo表格分页之各个参数代表的意义(一)
  • 原文地址:https://www.cnblogs.com/js-wxf/p/5227977.html
Copyright © 2011-2022 走看看