判断原理:
JavaScript是前端开发的主要语言,我们可以通过编写JavaScript程序来判断浏览器的类型及版本。JavaScript判断浏览器类型一般有两种办法,一种是根据各种浏览器独有的属性来分辨,另一种是通过分析浏览器的userAgent属性来判断的。在许多情况下,值判断出浏览器类型之后,还需判断浏览器版本才能处理兼容性问题,而判断浏览器的版本一般只能通过分析浏览器的userAgent才能知道。
浏览器类型
⑴浏览器特有属性
⑵根据userAgent
浏览器版本
⑴根据userAgent
对于手机浏览器判断
1.如何判断是否为移动终端 利用正则match,
匹配navigator.userAgent是否含有字符串AppleWebKit*****Mobile
安卓qq浏览器HD版 只有AppleWebKit
2手机语言版本的判断
使用navigator.browserLanguage 便可得出windows phone语言版本,
当然可恶的小小手机语言版本也有兼容性的差异,兼容Mozilla,以及AppleWebKit内核的浏览器访问其语言版本,它会列出 navigator.language
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
<script type= "text/javascript" > /* * 智能机浏览器版本信息: * */ var browser={ versions: function (){ var u = navigator.userAgent, app = navigator.appVersion; return { //移动终端浏览器版本信息 trident: u.indexOf( 'Trident' ) > -1, //IE内核 presto: u.indexOf( 'Presto' ) > -1, //opera内核 webKit: u.indexOf( 'AppleWebKit' ) > -1, //苹果、谷歌内核 gecko: u.indexOf( 'Gecko' ) > -1 && u.indexOf( 'KHTML' ) == -1, //火狐内核 mobile: !!u.match(/AppleWebKit.*Mobile.*/)||!!u.match(/AppleWebKit/), //是否为移动终端 ios: !!u.match(/(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端 android: u.indexOf( 'Android' ) > -1 || u.indexOf( 'Linux' ) > -1, //android终端或者uc浏览器 iPhone: u.indexOf( 'iPhone' ) > -1 || u.indexOf( 'Mac' ) > -1, //是否为iPhone或者QQHD浏览器 iPad: u.indexOf( 'iPad' ) > -1, //是否iPad webApp: u.indexOf( 'Safari' ) == -1 //是否web应该程序,没有头部与底部 }; }(), language:(navigator.browserLanguage || navigator.language).toLowerCase() } document.writeln( "语言版本: " +browser.language); document.writeln( " 是否为移动终端: " +browser.versions.mobile); document.writeln( " ios终端: " +browser.versions.ios); document.writeln( " android终端: " +browser.versions.android); document.writeln( " 是否为iPhone: " +browser.versions.iPhone); document.writeln( " 是否iPad: " +browser.versions.iPad); document.writeln(navigator.userAgent); </script> |
比较特别的地方
UC浏览器没有安卓报头,只返回:linux ,这里粗略的根据linux来判断是安卓(前提必须满足是移动终端,UC这点是满足的)
安卓QQ浏览器HD版检测的结果是:mac, Safari,这个很是变态,自己看着处理吧
3个检测浏览器User-Agent信息的网站
三个在线网站,通过手机浏览器就可以在线检测,很是方便
参考文章:
Pc浏览器
http://www.jb51.net/article/17302.htm
http://www.bairuiw.com/front-end-skill/1346.html
手机浏览器
http://www.iundefined.com/development/344.html
http://www.cnblogs.com/dowinning/archive/2011/07/22/2113747.html
http://www.cnblogs.com/dowinning/archive/2011/07/22/2113981.html
http://luckerme.com/archives/1015.html