先看几个useragent,都是我本机测试的
firefox3.5
引用
Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3
chrome4.0
引用
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
IE7.0
引用
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)
Opera10.00
引用
Opera/9.80 (Windows NT 5.1; U; zh-cn) Presto/2.2.15 Version/10.00
注意安装的是10.00版本(20090917日下载安装)!
用IETester
分别是IE5.5, 6.0, 7.0, 8.0模拟的ua
引用
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)
------------------------------------------------------------------------------------------------------
看技术文章,常见的useragent还有类似于下面的例子:
IE系列:
引用
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)
Firefox系列:
引用
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
Opera系列:
引用
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
Safari系列:
引用
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
Chrome系列:
引用
Mozilla/5.0 (Windows; U; Windows NT 5.2) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13
------------------------------------------------------------------------------------------------------
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;
加以改造成我自己用的浏览器判断代码
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/
分享到:
相关推荐
因为360的流氓性质,现在已经在 navigator.userAgent 检测不到360浏览器的特征。只能使用其他办法。这里是我自己找的一种办法 。 缺点是对移动端浏览器设备没统计和测试过,有什么问题和建议可以在留言中补充,我...
JavaScript判断浏览器类型一般有两种办法,一种是根据各种浏览器独有的属性来分辨,另一种是通过分析浏览器的userAgent属性来判断的。在许多情况下,值判断出浏览器类型之后,还需判断浏览器版本才能处理兼容性问题...
该 Javascript 库模块可以用于前端也可以用于后端 Nodejs 中。 直接下载browser.js,然后使用 script标签引入,可以得到全局函数 browser. 使用 npm 进行包管理,具体为: npm install browser-tool 然后使用 ...
return (Array)borwser 比如当前浏览器类型是ie6.0,那么borwser的值应该是[“ie”,”6″,”6.0″] 数组的第一个值表示浏览器的类型,第二个值表示浏览器的大版本,第三个值表示浏览器的详细版本号。 代码如下: /*...
通过userAgent判断检测一下userAgent返回的字符串里面是否包含“Chrome”, 具体怎么检测是通过indexOf方法进行的。 [removed] var isChrome = window.navigator.userAgent.indexOf(Chrome) !== -1; alert(...
该库的目的是完全从用户代理字符串中识别出网络浏览器,布局引擎,操作系统,cpu体系结构和设备类型/模型的详细类型,并且占用空间较小(压缩后为〜17KB,压缩后为〜6KB)。 用香草JavaScript编写,这意味着它不...
即用户代理检测浏览器是否为 IE 使用示例: if ( ! ieUserAgent . isIE ) { window . location . href = '/incompatibility' ; } var val = "IE" + ieUserAgent . version ; if ( ieUserAgent . compatibilityMode &...
Browsengine 这是一个小型库,用于检测不同的浏览器引擎、它们的版本以及它们运行在整个网络上的设备。 它的工作原理是处理浏览器引擎提供的信息,并将这些信息放在 <body> 标签的class属性中。前言JavaScript...
代码如下:var $mfunc=function(){ return { //此函数判断浏览器类型,为了简便,返回一个数字表示, //1.ie6;2.ie7; 3.ie8;4.ie5.5;5,Firefox;6.chrome;7.Opera;8.Safari;0.无法检测的浏览器 //其他浏览器可以自行添加 ...
Javascript小技巧一箩筐 事件源对象 event.srcElement.tagName event.srcElement.type 捕获释放 event.srcElement.setCapture(); event.srcElement.releaseCapture(); 事件按键 event.keyCode ...