JavaScript判断浏览器类型及版本
### JavaScript 判断浏览器类型及版本的方法 在网页开发过程中,有时候我们需要根据用户的浏览器类型和版本来执行特定的代码逻辑或调整界面布局。这是因为不同的浏览器在处理某些特性时可能存在差异,例如对新标准的支持程度、渲染引擎的行为等。通过JavaScript判断浏览器类型及版本,可以帮助开发者更好地进行兼容性处理。 #### 判断方法 ### 1. 利用 `navigator.userAgent` `navigator.userAgent` 是一个返回浏览器发送给服务器的用户代理字符串的属性。不同的浏览器在该字符串中会有特定的标识符,通过这些标识符可以识别出浏览器类型和版本。下面是一些常见浏览器的识别方式: - **IE(Internet Explorer)**: - 通过检查是否支持 `ActiveXObject` 来判断。 - 使用正则表达式匹配 `navigator.userAgent` 中的 `"MSIE"` 字符串来获取版本号。 - 示例版本: - `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**: - 通过 `document.getBoxObjectFor` 方法的存在来判断。 - 使用正则表达式匹配 `navigator.userAgent` 中的 `"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**: - 通过 `window.opera` 的存在来判断。 - 使用正则表达式匹配 `navigator.userAgent` 中的 `"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**: - 通过检测 `navigator.userAgent` 中是否存在 `Safari` 或者 `AppleWebKit` 来判断。 - 使用正则表达式匹配 `navigator.userAgent` 中的 `"Safari"` 或 `"AppleWebKit"` 字符串来获取版本号。 - 示例版本: - `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**: - 通过检测 `navigator.userAgent` 中是否存在 `Chrome` 和 `AppleWebKit` 来判断。 - 使用正则表达式匹配 `navigator.userAgent` 中的 `"Chrome"` 字符串来获取版本号。 - 示例版本: - `Mozilla/5.0 (Windows; U; Windows NT 5.2) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13` ### 2. 编写示例脚本 接下来,我们编写一个简单的脚本来实现上述功能,通过一个 `Sys` 对象来存储浏览器的信息: ```javascript // 定义 Sys 对象来保存浏览器信息 var Sys = {}; // 获取 navigator.userAgent 并转换为小写 var ua = navigator.userAgent.toLowerCase(); // 判断是否为 IE if (window.ActiveXObject) { // 获取 IE 版本 Sys.ie = ua.match(/msie([\d.]+)/)[1]; } else if (document.getBoxObjectFor) { // 判断是否为 Firefox Sys.firefox = ua.match(/firefox\/([\d.]+)/)[1]; } else if (window.MessageEvent && !document.getBoxObjectFor) { // 判断是否为 Chrome Sys.chrome = ua.match(/chrome\/([\d.]+)/)[1]; } else if (window.opera) { // 判断是否为 Opera Sys.opera = ua.match(/opera.([\d.]+)/)[1]; } // 输出结果 console.log(Sys); ``` ### 结论 以上方法通过分析 `navigator.userAgent` 和浏览器特定的API来识别浏览器类型及版本。需要注意的是,`navigator.userAgent` 可能会被修改或者伪装,因此这种方法并不是百分之百准确。然而,在大多数情况下,它足以满足基本的需求。此外,随着浏览器技术的发展,一些新的特性和API也会出现,开发者应该持续关注并更新自己的判断逻辑。
Posted on 2008-09-06 23:14 李战 阅读(14215) 评论(27) 编辑 收藏 网摘 所属分类: 前端开发
你知道世界上有多少种浏览器吗?除了我们熟知的IE, Firefox, Opera, Safari四大浏览器之外,世界上还有近百种浏览器。
几天前,浏览器家族有刚诞生了一位小王子,就是Google推出的Chrome浏览器。由于Chrome出生名门,尽管他还是个小家伙,没有人敢小看他。以后,咱们常说浏览器的“四大才子”就得改称为“五朵金花”了。
在网站前端开发中,浏览器兼容性问题本已让我们手忙脚乱,Chrome的出世不知道又要给我们添多少乱子。浏览器兼容性是前端开发框架要解决的第一个问题,要解决兼容性问题就得首先准确判断出浏览器的类型及其版本。
JavaScript是前端开发的主要语言,我们可以通过编写JavaScript程序来判断浏览器的类型及版本。JavaScript判断浏览器类型一般有两种办法,一种是根据各种浏览器独有的属性来分辨,另一种是通过分析浏览器的userAgent属性来判断的。在许多情况下,值判断出浏览器类型之后,还需判断浏览器版本才能处理兼容性问题,而判断浏览器的版本一般只能通过分析浏览器的userAgent才能知道。
我们先来分析一下各种浏览器的特征及其userAgent。
IE
只有IE支持创建ActiveX控件,因此她有一个其他浏览器没有的东西,就是ActiveXObject函数。只要判断window对象存在ActiveXObject函数,就可以明确判断出当前浏览器是IE。而IE各个版本典型的userAgent如下:
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)
其中,版本号是MSIE之后的数字。
Firefox
Firefox中的DOM元素都有一个getBoxObjectFor函数,用来获取该DOM元素的位置和大小(IE对应的中是getBoundingClientRect函数)。这是Firefox独有的,判断它即可知道是当前浏览器是Firefox。Firefox几个版本的userAgent大致如下:
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/20070803 Firefox/1.5.0.12
其中,版本号是Firefox之后的数字。
Opera
Opera提供了专门的浏览器标志,就是window.opera属性。Opera典型的userAgent如下:
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
其中,版本号是靠近Opera的数字。
Safari
Safari浏览器中有一个其他浏览器没有的openDatabase函数,可做为判断Safari的标志。Safari典型的userAgent如下:
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
其版本号是Version之后的数字。
剩余5页未读,继续阅读
- 粉丝: 0
- 资源: 25
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助