900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > javascript检测浏览器类型总结(通过useragent判断)

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

时间:2021-09-02 16:36:32

相关推荐

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

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

firefox3.5

[quote]Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.3) Gecko/0824 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版本(0917日下载安装)!

用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/070208 Firefox/3.0.1

Mozilla/5.0 (Windows; U; Windows NT 5.1) Gecko/0309 Firefox/2.0.0.3

Mozilla/5.0 (Windows; U; Windows NT 5.1) Gecko/0803 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判断浏览器类型及版本

/zhanglinguo11/blog/item/ac9b7d4b574457f983025c5d.html (此为转帖,原作在哪里?)

· 岁月如歌的《说说浏览器嗅探与特性探测》

/blog//01/browser-sniffing-vs-feature-detect/

· YUI 读码日记之 YAHOO.env.ua /archives/1013/

jQuery 如何检测浏览器及版本 /archives/696/

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。