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 相关文章推荐
jquery简单体验
Jan 10 Javascript
javascript采用数组实现tab菜单切换效果
Dec 12 Javascript
html超链接打开窗口大小的方法
Mar 05 Javascript
js 加密压缩出现bug解决方案
Nov 25 Javascript
jquery ui resize 中border-box的bug修正
Apr 26 Javascript
jQuery 1.9.1源码分析系列(十五)之动画处理
Dec 03 Javascript
AngularJS基础 ng-switch 指令简单示例
Aug 03 Javascript
ng-options和ng-checked在表单中的高级运用(推荐)
Jan 21 Javascript
Vue项目中最新用到的一些实用小技巧
Nov 06 Javascript
Angular单元测试之事件触发的实现
Jan 20 Javascript
Javascript地址引用代码实例解析
Feb 25 Javascript
vue如何批量引入组件、注册和使用详解
May 12 Vue.js
不安全的常用的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
浅谈php安全性需要注意的几点事项
2014/07/17 PHP
php中请求url的五种方法总结
2017/07/13 PHP
javascript中的几个运算符
2007/06/29 Javascript
jquery 查找iframe父级页面元素的实现代码
2011/08/28 Javascript
密码强度检测效果实现原理与代码
2013/01/04 Javascript
Js 冒泡事件阻止实现代码
2013/01/27 Javascript
在JS数组特定索引处指定位置插入元素
2014/07/27 Javascript
javascript获取flash版本号的方法
2014/11/20 Javascript
js学习之----深入理解闭包
2016/11/21 Javascript
详解webpack分离css单独打包
2017/06/21 Javascript
JS实现的走迷宫小游戏完整实例
2017/07/19 Javascript
mpvue全局引入sass文件的方法步骤
2019/03/06 Javascript
基于JS实现web端录音与播放功能
2019/04/17 Javascript
在vue中根据光标的显示与消失实现下拉列表
2019/09/29 Javascript
在Webpack中用url-loader处理图片和字体的问题
2020/04/28 Javascript
Node.js 深度调试方法解析
2020/07/28 Javascript
浅谈Python中copy()方法的使用
2015/05/21 Python
python3 判断列表是一个空列表的方法
2018/05/04 Python
Django-Rest-Framework 权限管理源码浅析(小结)
2018/11/12 Python
python判断输入日期为第几天的实例
2018/11/13 Python
Python Numpy库安装与基本操作示例
2019/01/08 Python
Keras中的两种模型:Sequential和Model用法
2020/06/27 Python
基于python实现生成指定大小txt文档
2020/07/20 Python
Python reques接口测试框架实现代码
2020/07/28 Python
python爬虫scrapy图书分类实例讲解
2020/11/23 Python
深入浅析CSS3中的Flex布局整理
2020/04/27 HTML / CSS
个性化皮包、小袋、生活配件:Mon Purse
2019/03/26 全球购物
如何客观的进行自我评价
2013/12/17 职场文书
前台接待员岗位职责
2014/01/02 职场文书
小学教师事迹材料
2014/01/13 职场文书
村委会主任先进事迹
2014/01/15 职场文书
校园摄影活动策划方案
2014/02/05 职场文书
项目建议书怎么写
2014/05/15 职场文书
晋江市人民政府党组群众路线教育实践活动整改方案
2014/10/25 职场文书
2015仓库保管员年终工作总结
2015/05/13 职场文书
试用期转正工作总结2015
2015/05/28 职场文书