这里对浏览器各自的userAgent特点做一分析,并给出判断方法:

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"字符串

以上对windows、iphone、android三大平台的主流浏览器解析就基本结束了,其他平台的linux估计至少与android平台应该类似,而采用了Mac OS的iPad和麦金塔应该与iphone平台类似,故而暂时先不做解析,也因为手头没有那么多设备和操作系统来测试,希望日后能够补上。

现在的网站产品开发要求跟以前又不一样了,因为不仅要满足电脑浏览,还需要满足用户通过智能手机(这里仅指iphone、android、windows phone等真正的智能手机,blackberry和palm这样的小众半智能系统暂时不考虑,至于symbian这个伪智能系统就一边玩去吧)通过以上三个具有代表性的平台,也大致可以推测出根据浏览器userAgent判断用户设备的解决方案了。

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样式在不同内核渲染效果不同的情况下使用,当然了,同样的内核在智能手机和电脑等不同设备上渲染结果也不同,这一点也需要注意。

3、判断浏览器useAgent的实际应用举例:

不同浏览器内核对页面的渲染效果不同,虽然已经有jQuery和Extjs等为我们做了兼容处理,但是依然会有一些细小的差别需要我们单独处理,此时需要判断浏览器内核;

用户并不仅仅是通过电脑访问网站的,随着智能手机的日益普及还有平板电脑的大行其道,使用这两者来上网的比例越来越高,怎么办?平板电脑还好,屏幕大分辨率高,智能手机受限于他的屏幕尺寸和分辨率,虽有强劲的处理能力,也可以完美支持现有的网站,但是为客户多考虑一点总没有坏处你说对吧?毕竟通过局部缩放拖拽的方式看网页很不舒服,这时呢,我们就可以专门为iphone、android这样的窄条屏幕提供一个专用版本来布局了,一来提升浏览体验,二来降低网络流量,加快访问速度;

做访客流量分析,通过判断客户浏览器类型并记录其数量,来优化设计自己的网站,以分别提升其客户体验

……

附几篇参考

http://www.cnblogs.com/dowinning/archive/2011/07/22/2113747.html

http://www-archive.mozilla.org/build/user-agent-strings.html

http://www.zhihu.com/question/19553117/answer/12207299

转载于:https://blog.51cto.com/gavins/1340268

通过userAgent判断用户浏览器相关推荐

  1. PHP判断用户浏览器是pc、Android、IOS、微信、QQ、安卓、苹果源码

    众所周知的是,在wap网页开发中我们需要对用户的浏览器属性进行判断,从而推荐不同内容给不同用户,亦或是pc页和wap页的自动跳转.今天给大家带来的就是利用PHP智能判断用户浏览器属性,区分pc.And ...

  2. 手机浏览器类型ua php,通过userAgent判断手机浏览器类型(示例代码)

    我们可以通过userAgent来判断,比如检测某些关键字,例如:AppleWebKit*****Mobile或AppleWebKit,需要注意的是有些浏览器的userAgent中并不包含AppleWe ...

  3. php通过agent判断app,通过userAgent判断手机浏览器类型 – 好饱的博客 – 程序员博客...

    我们可以通过userAgent来判断,比如检测某些关键字,例如:AppleWebKit*****Mobile或AppleWebKit,需要注意的是有些浏览器的userAgent中并不包含AppleWe ...

  4. 云闪付UA 通过user-agent判断用户是否使用云闪付

    经过大量的测试,普通的网址是会从云闪付的服务器跳出的.提示从浏览器打开. 但是经过银联签约的认证网站是可以在云闪付内打开的,至于漫长的签约过程我就不说了.直接上干货. 银联云闪付在Android下的U ...

  5. js判断用户浏览器类型(IE或IE内核和非IE)及判断IE浏览器版本(32位或64位)

    判断是否是IE浏览器或IE内核浏览器: function aaa(){//ie? if (!!window.ActiveXObject || "ActiveXObject" in ...

  6. JS使用userAgent判断操作系统和浏览器类型

    1.应用场景: 在做ios和android应用时,需要扫码进行应用的下载,可以通过扫描一个二维码,然后跳到指定的页面,页面中使用js判断操作系统和浏览器类型,然后给出不同的下载地址.这样就可以实现an ...

  7. 过http user-agent判断是否为手机浏览器

    我们做Web开发的时候,常常需要判断用户是否是使用手机访问网站,从而决定如何页面任何展示给用户,以提高用户体验,这时需要用到判断浏览器类型的代码: 下面PHP函数可以根据http user-agent ...

  8. php 判断是否为安卓,通过http user-agent判断是否为手机浏览器

    我们做Web一很等指似很一者下插近直好一的的有段文,开发的时候,常常需要判断用户是否是使用手机访问网站,从而决定如何页面任何展示给用户,以提高用户体验,这时需要用到判断浏览器类型的代码调代求学功解宗维 ...

  9. C#判断用户是否使用微信浏览器,并据此来显示真实内容或二维码

    平时我们看一些网页的时候会发现这样的功能:有的页面只能在微信里访问,如果在电脑上访问就只显示当前地址的二维码.这个用C#怎么实现呢?我们结合代码来看看. 首先,我们需要先判断用户使用的是什么浏览器,这 ...

  10. 判断用户使用的浏览器是不是IE8

    浏览器内核 浏览器最重要或者说核心的部分是"Rendering Engine",可大概译为"渲染引擎",不过我们一般习惯将之称为"浏览器内核" ...

最新文章

  1. Opencv实现透视形变
  2. Visual Studio安装卸载模板
  3. lt;二gt;读lt;lt;大话设计模式gt;gt;之策略模式
  4. C#刷遍Leetcode面试题系列连载(6):No.372 - 超级次方
  5. Oracle JRockit Mission Control 4.1发布
  6. python recv_Python socket.recv方法代码示例
  7. ocp证书怎么考_没有基础怎么考初级会计证书?
  8. golang Println、Printf、Sprintf的区别
  9. 7 分钟全面了解位运算
  10. ecstore 定时任务配置
  11. sap business one 开发_敏捷软件开发实践:估算与计划读书笔记120第18章 估算速度...
  12. Android替换开机动画
  13. replace vfp_vfp8.0中,用REPLACE命令怎样输 – 手机爱问
  14. java 下载excel到本地_java已知下载链接将Excel文件利用httpclient下载到本地
  15. 产业变革新机遇,与5G同行,驰骋在浪潮之巅
  16. 计算机固态硬盘装系统,固态硬盘如何装系统
  17. pos方式下载文件,解决url参数过长问题
  18. Excel图表制作(一):商务图表之加最大值和最小值标签的基本图
  19. javascript基础常识问答(三)
  20. 【uniapp】实现H5微信分享

热门文章

  1. Oauth三种认证方式
  2. idea的黄色感叹号之Spring Configuration Check (Please configura/setup Spring facet for modules)
  3. 构建机器学习系统的20个经验教训
  4. Mybatis常见的面试题
  5. python同名函数相互冲突_两个函数同名python
  6. mysql5.7 开启重连_MySQL5.7.9,怎样永久设置client、connection、results这三项为utf8?...
  7. PHP获取真实客户端的真实IP REMOTE_ADDR,HTTP_CLIENT_IP,HTTP_X_FORWARDED_FOR
  8. [预打印]使用vbs给PPT(包括公式)去背景
  9. LNMP编译安装教程
  10. 在线旅游网站发展趋势分析