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 相关文章推荐
js 浏览器事件介绍
Mar 30 Javascript
Android中资源文件(非代码部分)的使用概览
Dec 18 Javascript
javascript+xml实现简单图片轮换(只支持IE)
Dec 23 Javascript
JavaScript 函数的执行过程
May 09 Javascript
Node.js中文件操作模块File System的详细介绍
Jan 05 Javascript
微信小程序 新建登录页并实现tabBar隐藏
Jun 13 Javascript
基于JS代码实现简单易用的倒计时 x 天 x 时 x 分 x 秒效果
Jul 13 Javascript
JS操作时间 - UNIX时间戳的简单介绍(必看篇)
Aug 16 Javascript
微信小程序js文件改变参数并在视图上及时更新【推荐】
Jun 11 Javascript
js遍历详解(forEach, map, for, for...in, for...of)
Aug 28 Javascript
JS实现动态倒计时功能(天数、时、分、秒)
Dec 12 Javascript
基于canvasJS在PHP中制作动态图表
May 30 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/12/06 PHP
php获取数组元素中头一个数组元素值的实现方法
2014/12/20 PHP
php微信公众号开发模式详解
2016/11/28 PHP
读jQuery之十一 添加事件核心方法
2011/07/31 Javascript
js修改地址栏URL参数解决url参数问题
2012/12/15 Javascript
JS实现淘宝幻灯片效果的实现方法
2013/03/22 Javascript
对之前写的jquery分页做下升级
2014/06/19 Javascript
一个仿糯米弹框效果demo
2014/07/22 Javascript
JavaScript检查某个function是否是原生代码的方法
2014/08/20 Javascript
直接拿来用的页面跳转进度条JS实现
2016/01/06 Javascript
javascript禁止超链接跳转的方法
2016/02/02 Javascript
jQuery设置Cookie及删除Cookie实例分析
2016/04/15 Javascript
详解原生JavaScript实现jQuery中AJAX处理的方法
2016/05/10 Javascript
jQuery给div,Span, a ,button, radio 赋值与取值
2016/06/24 Javascript
React学习笔记之事件处理(二)
2017/07/02 Javascript
jQuery.Sumoselect插件实现下拉复选框效果
2017/11/09 jQuery
微信小程序转发事件实现解析
2019/10/22 Javascript
使用Vue Composition API写出清晰、可扩展的表单实现
2020/06/10 Javascript
Vue如何提升首屏加载速度实例解析
2020/06/25 Javascript
node koa2 ssr项目搭建的方法步骤
2020/12/11 Javascript
easy_install python包安装管理工具介绍
2013/02/10 Python
从头学Python之编写可执行的.py文件
2017/11/28 Python
python中requests和https使用简单示例
2018/01/18 Python
Sanic框架流式传输操作示例
2018/07/18 Python
python实现连续图文识别
2018/12/18 Python
pyqt5 实现在别的窗口弹出进度条
2019/06/18 Python
Python-接口开发入门解析
2019/08/01 Python
python3 BeautifulSoup模块使用字典的方法抓取a标签内的数据示例
2019/11/28 Python
css3 盒模型以及box-sizing属性全面了解
2016/09/20 HTML / CSS
Holiday Inn中国官网:IHG旗下假日酒店预订
2018/04/08 全球购物
党章学习思想汇报
2014/01/14 职场文书
竞选学委演讲稿
2014/09/13 职场文书
2014最新党员批评与自我批评材料
2014/09/24 职场文书
2015年民主评议党员工作总结
2015/05/19 职场文书
圣贤教育改变命运观后感
2015/06/16 职场文书
CSS变量实现主题切换的方法
2021/06/23 HTML / CSS