`
cuckoosnest
  • 浏览: 103586 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多
先看几个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/


分享到:
评论

相关推荐

    js检测浏览器类型

    总结来说,JavaScript通过`navigator.userAgent`来检测浏览器类型,开发者可以编写函数进行匹配和解析,以识别用户使用的浏览器,并据此进行特定的优化或功能实现。在实际开发中,我们还需要关注浏览器的版本信息,...

    JavaScript判断浏览器类型及版本

    通过JavaScript判断浏览器类型及版本,可以帮助开发者更好地进行兼容性处理。 #### 判断方法 ### 1. 利用 `navigator.userAgent` `navigator.userAgent` 是一个返回浏览器发送给服务器的用户代理字符串的属性。...

    判断浏览器类型(判断浏览器类型)

    JavaScript提供了许多内置对象和方法,可以用来检测浏览器类型。以下是一些常用的JavaScript代码片段: 1. 利用`navigator.userAgent`属性: ```javascript var userAgent = navigator.userAgent; if (userAgent....

    js检测浏览器版本 javascript检测浏览器

    因为360的流氓性质,现在已经在 navigator.userAgent 检测不到360浏览器的特征。只能使用其他办法。这里是我自己找的一种办法 。 缺点是对移动端浏览器设备没统计和测试过,有什么问题和建议可以在留言中补充,我...

    js判断浏览器类型,返回浏览器类型名称.

    这段代码通过检查`userAgent`字符串中是否存在特定的浏览器名称来判断浏览器类型。如果发现多个浏览器标识,它将返回最先匹配到的浏览器类型。 然而,这种方法并不完全可靠,因为用户可以自定义`userAgent`字符串,...

    javascript获取浏览器类型和版本的方法(js获取浏览器版本).docx

    3. JavaScript 检测浏览器类型和版本的代码 4. js/jquery 推断浏览器类型的方法 获取浏览器类型和版本是一个非常重要的功能,它可以帮助开发者更好地适应不同的浏览器环境,从而提高 web 应用程序的兼容性和可用性...

    JavaScript判断浏览器类型及版本[归类].pdf

    总之,JavaScript是处理浏览器兼容性问题的重要手段,通过对浏览器特性的检测和userAgent字符串的解析,可以有效地识别和应对各种浏览器的差异,从而提升网站的跨浏览器兼容性。随着技术的发展,开发者需要不断学习...

    jquery1.9判断浏览器类型和版本

    在jQuery 1.9版本中,官方移除了`$.browser`对象,这个对象曾经是用于检测浏览器类型和版本的便捷方式。然而,这并不意味着我们无法再进行此类检测。今天我们将探讨一种新的方法,特别是在jQuery 1.9及更高版本中,...

    navigator-检测浏览器版本-javascript

    ### 使用navigator对象检测浏览器版本及特性 在网页开发过程中,有时候我们需要根据用户的浏览器类型或版本来调整页面的行为或样式。JavaScript 提供了 `navigator` 对象来帮助开发者获取客户端浏览器的相关信息,...

    判断浏览器版本及类型

    ### 知识点一:JavaScript检测浏览器类型与版本 ...综上所述,虽然通过JavaScript检测浏览器类型及版本是一种常见的做法,但在实际应用中还需要考虑到其局限性,并采取适当的优化措施以提高兼容性和安全性。

    JS判断浏览器类型与版本

    总结来说,JavaScript提供了多种方法来检测浏览器类型和版本,这有助于我们进行跨浏览器的开发,确保代码在各种环境下都能正常工作。同时,理解并熟练运用ExtJS组件的配置属性,可以帮助我们更高效地创建和定制用户...

    javascript浏览器及系统判断

    综上所述,通过JavaScript可以灵活地检测用户所使用的浏览器类型及其版本,同时也能识别出操作系统及屏幕分辨率等信息。这些技术对于优化用户体验、确保网站在各种环境下都能正常运行具有重要意义。

    JavaScript判断各种浏览器代码

    通过以上分析可以看出,使用JavaScript检测不同浏览器并根据其特点选择合适的标签和技术是完全可行的。这不仅可以提高网页的兼容性,还可以增强用户体验。然而,需要注意的是,`navigator.userAgent`可能会被篡改...

    判断浏览器版本的js代码

    ### 知识点一:JavaScript检测浏览器类型及版本 在Web开发中,有时我们需要根据用户使用的浏览器类型或版本来执行不同的脚本或显示特定的信息。这是因为不同浏览器对Web标准的支持程度可能有所不同,甚至同一浏览器...

    js、css、html判断浏览器的各种版本

    ### JavaScript(JS)检测浏览器版本 JavaScript提供了多种方法来检测浏览器的版本。最常用的方法是通过`navigator.userAgent`属性,它返回一个字符串,包含了浏览器的类型和版本信息。例如,要检测是否为Internet ...

    JavaScript判断浏览器类型的方法

    在实际开发过程中,可以通过编写一个通用的函数来封装浏览器检测的逻辑,以便在需要判断浏览器类型的地方直接调用。这样的函数可以接受一个回调函数作为参数,根据不同浏览器的类型执行不同的逻辑。这样的设计不仅能...

    检测当前浏览器支持的javascript版本

    这种方法是通过分析`navigator.userAgent`字符串来判断浏览器类型和版本。 例如,检测Chrome浏览器是否支持ES6的新特性: ```javascript const userAgent = navigator.userAgent; if (userAgent.indexOf('Chrome')...

    js判断浏览器类型

    这意味着,与其去识别特定的浏览器,不如检测浏览器是否支持所需的API或特性。例如,如果需要使用`fetch` API,可以尝试调用它并捕获可能的错误,而不是先检查浏览器类型。 ```javascript if ('fetch' in window) {...

    javascript经典特效---检测浏览器支持的js版本.rar

    本文将探讨如何利用JavaScript来检测浏览器支持的JS版本。 首先,理解JavaScript版本检测的重要性是至关关键的。由于不同的浏览器对JavaScript的支持程度不同,有的可能不完全支持新版本的特性,甚至有些老旧的...

Global site tag (gtag.js) - Google Analytics