javascript检测浏览器类型总结(通过useragent判断)

先看几个useragent,都是我本机测试的

firefox3.5
[quote]Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3[/quote]

chrome4.0
[quote]Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.202.0 Safari/532.0[/quote]

IE7.0
[quote]Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; WebSaver; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)[/quote]

Opera10.00
[quote]Opera/9.80 (Windows NT 5.1; U; zh-cn) Presto/2.2.15 Version/10.00[/quote]
注意安装的是10.00版本(20090917日下载安装)!

用IETester
分别是IE5.5, 6.0, 7.0, 8.0模拟的ua
[quote]Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; WebSaver; Maxthon; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)

Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; WebSaver; Maxthon; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; WebSaver; Maxthon; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)

Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; WebSaver; Maxthon; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)[/quote]

------------------------------------------------------------------------------------------------------

看技术文章,常见的useragent还有类似于下面的例子:

IE系列:
[quote]Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2)
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Mozilla/4.0 (compatible; MSIE 5.0; Windows NT)[/quote]

Firefox系列:
[quote]Mozilla/5.0 (Windows; U; Windows NT 5.2) Gecko/2008070208 Firefox/3.0.1
Mozilla/5.0 (Windows; U; Windows NT 5.1) Gecko/20070309 Firefox/2.0.0.3
Mozilla/5.0 (Windows; U; Windows NT 5.1) Gecko/20070803 Firefox/1.5.0.12[/quote]

Opera系列:
[quote]Opera/9.27 (Windows NT 5.2; U; zh-cn)
Opera/8.0 (Macintosh; PPC Mac OS X; U; en)
Mozilla/5.0 (Macintosh; PPC Mac OS X; U; en) Opera 8.0[/quote]

Safari系列:
[quote]Mozilla/5.0 (Windows; U; Windows NT 5.2) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13
Mozilla/5.0 (iPhone; U; CPU like Mac OS X) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/4A93 Safari/419.3[/quote]

Chrome系列:
[quote]Mozilla/5.0 (Windows; U; Windows NT 5.2) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13[/quote]


------------------------------------------------------------------------------------------------------

JQuery1.2, 1.3中对浏览器类型判断的代码如下

var userAgent = navigator.userAgent.toLowerCase();
// Figure out what browser is being used
jQuery.browser = {
version: (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1],
safari: /webkit/.test( userAgent ),
opera: /opera/.test( userAgent ),
msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),
mozilla: /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent )
};


这个代码会错误的把我的IE7.0判断成6.0!
而且jq1.3开始不推荐使用ua的判断,而使用特征判断。


在技术文章中看到此代码深得我心
var Sys = {};
var ua = navigator.userAgent.toLowerCase();
var s;
(s = ua.match(/msie ([\d.]+)/)) ? Sys.ie = s[1] :
(s = ua.match(/firefox\/([\d.]+)/)) ? Sys.firefox = s[1] :
(s = ua.match(/chrome\/([\d.]+)/)) ? Sys.chrome = s[1] :
(s = ua.match(/opera.([\d.]+)/)) ? Sys.opera = s[1] :
(s = ua.match(/version\/([\d.]+).*safari/)) ? Sys.safari = s[1] : 0;



[b]加以改造成我自己用的浏览器判断代码[/b]

Y.ua = function() {
var ua = navigator.userAgent.toLowerCase(), s, o = {};
if( s=ua.match(/msie ([\d.]+)/) ) {
o.ie = true;
o.info = "ie";
} else if( s=ua.match(/firefox\/([\d.]+)/) ) {
o.ff = true;
o.info = "ff";
} else if( s=ua.match(/chrome\/([\d.]+)/) ) {
o.chrome = true;
o.info = "chrome";
} else if( s=ua.match(/opera.([\d.]+)/) ) {
o.opera = true;
o.info = "opera";
} else if( s=ua.match(/version\/([\d.]+).*safari/) ) {
o.safari = true;
o.info = "safari";
}
if( s && s[1] ) {
o.version = parseFloat( s[1] );
} else {
o.version = 0;
}
o.info = (o.info?o.info:"") + "_" + o.version;
return o;
}();


对付我本机的几个浏览器判断都正确了(除了opera10.00显示9.8的版本)


参考资料:
· JavaScript判断浏览器类型及版本
http://hi.baidu.com/zhanglinguo11/blog/item/ac9b7d4b574457f983025c5d.html (此为转帖,原作在哪里?)

· 岁月如歌的《说说浏览器嗅探与特性探测》
http://lifesinger.org/blog/2009/01/browser-sniffing-vs-feature-detect/

· YUI 读码日记之 YAHOO.env.ua http://www.gracecode.com/archives/1013/
jQuery 如何检测浏览器及版本 http://www.gracecode.com/archives/696/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值