javascript 检测浏览器类型和版本的代码


Posted in Javascript onSeptember 15, 2009

检测浏览器及其版本的代码

getBrowser : function(){ 
var browser = { 
msie: false, firefox: false, opera: false, safari: false, 
chrome: false, netscape: false, appname: 'unknown', version: 0 
}, 
userAgent = window.navigator.userAgent.toLowerCase(); 
if ( /(msie|firefox|opera|chrome|netscape)\D+(\d[\d.]*)/.test( userAgent ) ){ 
browser[RegExp.$1] = true; 
browser.appname = RegExp.$1; 
browser.version = RegExp.$2; 
} else if ( /version\D+(\d[\d.]*).*safari/.test( userAgent ) ){ // safari 
browser.safari = true; 
browser.appname = 'safari'; 
browser.version = RegExp.$2; 
} 
return browser.appname + browser.version; 
}

对象/特征检测法

该方法是一种判断浏览器能力(而非浏览器的确切型号)的通用方法。大部分JS专家认为这个方法最合适,因为他们认为按照该方法所编写的脚本是经得起未来考验的。

//获取IE浏览器的版本号
//返回数值,显示IE的主版本号
function getIEVer() {
var ua = navigator.userAgent; //获取用户端信息
var b = ua.indexOf("MSIE "); //检测特殊字符串"MSIE "的位置
if (b < 0) {
return 0;
}
return parseFloat(ua.substring(b + 5, ua.indexOf(";", b))); //截取版本号字符串,并转换为数值
}

alert(getIEVer()); //返回数值8(我的IE8)

如果更关注浏览器的能力而不在乎它实际的身份,就可以使用这种方法。

user-agent字符串检测法

user-agent字符串提供了关于Web浏览器的大量信息,包括浏览器的名称和版本。

var ua = navigator.userAgent.toLowerCase(); //获取用户端信息
var info = {
ie: /msie/.test(ua) && !/opera/.test(ua),  //匹配IE浏览器
op: /opera/.test(ua),  //匹配Opera浏览器
sa: /version.*safari/.test(ua),  //匹配Safari浏览器
ch: /chrome/.test(ua),  //匹配Chrome浏览器
ff: /gecko/.test(ua) && !/webkit/.test(ua)  //匹配Firefox浏览器
};
(info.ie) && alert("IE浏览器");
(info.op) && alert("Opera浏览器");
(info.sa) && alert("Safari浏览器");
(info.ff) && alert("Firefox浏览器");
(info.ch) && alert("Chrome浏览器");

通常我们做得最多的,就是判断是否是IE了,其它几种浏览器一般都会符合标准.有些客户只需要符合IE和FF就已经满足了.那么我们可以这样做:

var isIE = (navigator.appName == "Microsoft Internet Explorer");

判断IE远远不止上面一种方法,可以使用IE更多特有的东西,如:window.ActiveXObject,document.all等,这些都属于对象/特征检测法了!通常要在不同的浏览器上写不同的样式(因为IE样式解析也各有不同),那就得判断版本了.可以这样做

//获取IE浏览器的版本号
//返回数值,显示IE的主版本号
function getIEVer() {
var ua = navigator.userAgent; //获取用户端信息
var b = ua.indexOf("MSIE "); //检测特殊字符串"MSIE "的位置
if (b < 0) {
return 0;
}
return parseFloat(ua.substring(b + 5, ua.indexOf(";", b))); //截取版本号字符串,并转换为数值
}

alert(getIEVer()); //返回数值7

检测操作系统:

var isWin = (navigator.userAgent.indexOf("Win") != -1); //如果是Windows系统,则返回true
var isMac = (navigator.userAgent.indexOf("Mac") != -1);  //如果是Macintosh系统,则返回true
var isUnix = (navigator.userAgent.indexOf("X11") != -1);  //如果是Unix系统,则返回true
var isLinux = (navigator.userAgent.indexOf("Linux") != -1);  //如果是Linux系统,则返回true

文章大部分内容来自于《Javascript征途》

Javascript 相关文章推荐
用JavaScript实现仿Windows关机效果
Mar 10 Javascript
JS中引用百度地图并将百度地图的logo和信息去掉
Sep 29 Javascript
jQuery向上遍历DOM树之parents(),parent(),closest()之间的区别
Dec 02 Javascript
jquery实现弹出div,始终显示在屏幕正中间的简单实例
Mar 08 Javascript
深入探讨JavaScript、JQuery屏蔽网页鼠标右键菜单及禁止选择复制
Jun 10 Javascript
javascript实现的图片切割多块效果实例
May 07 Javascript
JS递归遍历对象获得Value值方法技巧
Jun 14 Javascript
Vue.set()实现数据动态响应的方法
Feb 07 Javascript
详解easyui 切换主题皮肤
Apr 04 Javascript
自定义Vue组件打包、发布到npm及使用教程
May 22 Javascript
vue-cli基础配置及webpack配置修改的完整步骤
Oct 20 Javascript
JS操作字符串转数字的常见方法示例
Oct 29 Javascript
不安全的常用的js写法
Sep 15 #Javascript
Mootools 1.2教程 滑动效果(Slide)
Sep 15 #Javascript
Mootools 1.2教程 同时进行多个形变动画
Sep 15 #Javascript
Mootools 1.2教程(21)——类(二)
Sep 15 #Javascript
Mootools 1.2教程 选项卡效果(Tabs)
Sep 15 #Javascript
Mootools 1.2教程 Tooltips
Sep 15 #Javascript
Mootools 1.2教程 类(一)
Sep 15 #Javascript
You might like
复杂检索数据并分页显示的处理方法
2006/10/09 PHP
PHP中文分词的简单实现代码分享
2011/07/17 PHP
PHP中HTML标签过滤技巧
2014/01/07 PHP
PHP中is_dir()函数使用指南
2015/05/08 PHP
php计算整个目录大小的方法
2015/06/19 PHP
深入解析PHP的Yii框架中的event事件机制
2016/03/17 PHP
PhpStorm 如何优雅的调试Hyperf的方法步骤
2019/11/24 PHP
js 判断 enter 事件
2009/02/12 Javascript
Prototype 学习 Prototype对象
2009/07/12 Javascript
用html5 js实现点击一个按钮达到浏览器全屏效果
2014/05/28 Javascript
深入理解JS函数的参数(arguments)的使用
2016/05/28 Javascript
JS留言功能的简单实现案例(推荐)
2016/06/23 Javascript
ES2015 Symbol 一种绝不重复的值
2016/12/25 Javascript
PHP7新特性简述
2017/06/11 Javascript
node.js利用mongoose获取mongodb数据的格式化问题详解
2017/10/06 Javascript
Angular自定义组件实现数据双向数据绑定的实例
2017/12/11 Javascript
微信小程序倒计时功能实例代码
2018/07/17 Javascript
深入理解nodejs搭建静态服务器(实现命令行)
2019/02/05 NodeJs
jQuery+ajax实现批量删除功能完整示例
2019/06/06 jQuery
Vue中的nextTick作用和几个简单的使用场景
2021/01/25 Vue.js
Python查询IP地址归属完整代码
2017/06/21 Python
深入浅出学习python装饰器
2017/09/29 Python
PyQt5每天必学之创建窗口居中效果
2018/04/19 Python
OpenCV2从摄像头获取帧并写入视频文件的方法
2018/08/03 Python
基于django channel实现websocket的聊天室的方法示例
2019/04/11 Python
python 实现屏幕录制示例
2019/12/23 Python
Django框架静态文件处理、中间件、上传文件操作实例详解
2020/02/29 Python
NEW LOOK官网:英国时装零售巨头之一,快时尚品牌
2017/01/11 全球购物
美国知名保健品网站:LuckyVitamin(支持中文)
2017/08/09 全球购物
可打印的优惠券、杂货和优惠券代码:Coupons.com
2018/06/12 全球购物
同程旅游英文网站:LY.com
2018/11/13 全球购物
党委书记岗位职责
2013/11/24 职场文书
如何撰写岗位职责
2014/02/01 职场文书
模具毕业生推荐信
2014/02/15 职场文书
2015年中学体育教师工作总结
2015/10/23 职场文书
vscode远程免密登入Linux服务器的配置方法
2022/06/28 Servers