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 EasyUI 使用介绍
Apr 01 Javascript
jQuery EasyUI API 中文文档 - NumberBox数字框
Oct 13 Javascript
javascript如何创建表格(javascript绘制表格的二种方法)
Dec 10 Javascript
Javascript中的匿名函数与封装介绍
Mar 15 Javascript
借助FileReader实现将文件编码为Base64后通过AJAX上传
Dec 24 Javascript
JavaScript实现带播放列表的音乐播放器实例分享
Mar 07 Javascript
jQuery控制文本框只能输入数字和字母及使用方法
May 26 Javascript
Node.js读写文件之批量替换图片的实现方法
Sep 07 Javascript
JavaScript设计模式之单例模式详解
Jun 09 Javascript
axios携带cookie配置详解(axios+koa)
Dec 28 Javascript
监听element-ui table滚动事件的方法
Mar 26 Javascript
JS数组的常用10种方法详解
May 08 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
PHP聊天室技术
2006/10/09 PHP
IIS下PHP连接数据库提示mysql undefined function mysql_connect()
2010/06/04 PHP
php表单处理操作
2017/11/16 PHP
详解PHP队列的实现
2019/03/14 PHP
thinkPHP5.1框架中Request类四种调用方式示例
2019/08/03 PHP
15个款优秀的 jQuery 图片特效插件推荐
2011/11/21 Javascript
js showModalDialog参数的使用详解
2014/01/07 Javascript
使用JavaScript实现连续滚动字幕效果的方法
2015/07/07 Javascript
浅谈JavaScript前端开发的MVC结构与MVVM结构
2016/06/03 Javascript
Angular-Touch库用法示例
2016/12/22 Javascript
jquery实现tab键进行选择后enter键触发click行为
2017/03/29 jQuery
jquery append与appendTo方法比较
2017/05/24 jQuery
javascript按顺序加载运行js方法
2017/12/01 Javascript
Vue导出json数据到Excel电子表格的示例
2017/12/04 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【圆形情况】
2018/12/13 Javascript
koa大型web项目中使用路由装饰器的方法示例
2019/04/02 Javascript
JS实现li标签的删除
2019/04/12 Javascript
深入了解JavaScript词法作用域
2020/07/29 Javascript
Vue+element-ui添加自定义右键菜单的方法示例
2020/12/08 Vue.js
[01:34]2014DOTA2 TI预选赛预选赛 选手比赛房大揭秘!
2014/05/20 DOTA
使用Python脚本实现批量网站存活检测遇到问题及解决方法
2016/10/11 Python
利用Python暴力破解zip文件口令的方法详解
2017/12/21 Python
Python基本语法之运算符功能与用法详解
2019/10/22 Python
python中for in的用法详解
2020/04/17 Python
Python读取yaml文件的详细教程
2020/07/21 Python
Python中qutip用法示例详解
2020/10/02 Python
使用CSS3实现圆角,阴影,透明
2014/12/23 HTML / CSS
CSS Grid布局教程之什么是网格布局
2014/12/30 HTML / CSS
使用HTML5的表单验证的简单示例
2015/09/09 HTML / CSS
好药师网上药店:安全合法的网上药品零售药房
2017/02/15 全球购物
植村秀加拿大官网:Shu Uemura加拿大
2019/09/03 全球购物
群众路线组织生活会发言材料
2014/10/17 职场文书
2014党的群众路线教育实践活动总结报告
2014/10/31 职场文书
劳动仲裁撤诉申请书
2015/05/18 职场文书
西安事变观后感
2015/06/12 职场文书
springboot实现string转json json里面带数组
2022/06/16 Java/Android