javascript 学习笔记(六)浏览器类型及版本信息检测代码


Posted in Javascript onApril 08, 2011

下面的checkBrowser()函数主要检测了三种浏览器(IE, firefox, chrome),其它的浏览器的检测有兴趣的朋友可以自行添加检测代码!
HTML部分代码: (页面加载时执行检测函数)

<body onload="checkBrowser()"> 
<p id="userAgent"></p> 
<p id="browser"></p> 
</body>

javascript部分代码:
检测的原理主要根据 浏览器的用户代理报头nanigator.userAgent中提取到浏览器和类型及版本信息,利用正则表达式可以很容易的满足我们的需求,如对正则表达式不熟悉,可参照此文(正则表达式)
function check(reg) { 
var ug = navigator.userAgent.toLowerCase(); 
return reg.test(ug); 
} 
function checkBrowser() { 
var ug = navigator.userAgent.toLowerCase(); 
var userAgent = document.getElementById("userAgent"); 
userAgent.innerHTML = "浏览器的用户代理报头:" + ug; 
var browserType = ""; 
var ver = ""; 
//检测IE及版本 
var IE = ug.match(/msie\s*\d\.\d/); //提取浏览器类型及版本信息,注match()方法返回的是数组而不是字符串 
var isIE = check(/msie/); 
if(isIE) { 
browserType = "Internet Explorer"; 
ver = IE.join(" ").match(/[0-9]/g).join("."); //先用join()方法转化为字符串,然后用match()方法匹配到版本信息,再用join()方法转化为字符串 
} 
//检测chrome及版本 
var chrome = ug.match(/chrome\/\d\.\d/gi); 
var isChrome = check(/chrome/); 
if(isChrome) { 
browserType = "Chrome"; 
ver = chrome.join(" ").match(/[0-9]/g).join("."); 
} 
//检测firefox及版本 
var firefox = ug.match(/firefox\/\d\.\d/gi); 
var isFirefox = check(/firefox/); 
if(isFirefox) { 
browserType = "Firefox"; 
ver = firefox.join(" ").match(/[0-9]/g).join("."); 
} 
var browser = document.getElementById("browser"); 
browser.innerHTML = "您正在使用的浏览器为:" + browserType + "<span style='padding-left:15px;'>版本为:</span>" + ver; 
}

PS:各浏览器的用户代理信息如下:
 
IE:Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; BOIE9;ZHCN);
firefox:Mozilla/5.0 (Windows NT 6.1; rv:2.0) Gecko/20100101 Firefox/4.0;
chrome:Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.98 Safari/534.13
Javascript 相关文章推荐
新发现一个骗链接的方法(js读取cookies)
Jan 11 Javascript
Jquery使用css方法改变样式实例
May 18 Javascript
Javascript将JSON日期格式化
Aug 23 Javascript
浅谈js之字面量、对象字面量的访问、关键字in的用法
Nov 20 Javascript
基于JavaScript实现瀑布流布局
Aug 15 Javascript
js事件on动态绑定数据,绑定多个事件的方法
Sep 15 Javascript
Element ui 下拉多选时新增一个选择所有的选项
Aug 21 Javascript
Vue 使用beforeEach实现登录状态检查功能
Oct 31 Javascript
JavaScript(js)处理的HTML事件、键盘事件、鼠标事件简单示例
Nov 19 Javascript
简单了解Vue + ElementUI后台管理模板
Apr 07 Javascript
JS如何操作DOM基于表格动态展示数据
Oct 15 Javascript
Vue实现图书管理案例
Jan 20 Vue.js
javascript学习笔记(五)正则表达式
Apr 08 #Javascript
javascript学习笔记(三)显示当时时间的代码
Apr 08 #Javascript
javascript 学习笔记(一)DOM基本操作
Apr 08 #Javascript
jQuery 名称冲突的解决方法
Apr 08 #Javascript
js 事件处理函数间的Event物件是否全等
Apr 08 #Javascript
Javascript 八进制转义字符(8进制)
Apr 08 #Javascript
JavaScript中判断函数是new还是()调用的区别说明
Apr 07 #Javascript
You might like
自己做矿石收音机
2021/03/02 无线电
php入门之连接mysql数据库的一个类
2012/04/21 PHP
Yii2创建控制器(createController)方法详解
2016/07/23 PHP
PHP的消息通信机制测试实例
2016/11/10 PHP
php生成毫秒时间戳的实例讲解
2017/09/22 PHP
php中yii框架实例用法
2020/12/22 PHP
JavaScript Event学习补遗 addEventSimple
2010/02/11 Javascript
JS中typeof与instanceof之间的区别总结
2013/11/14 Javascript
原生javascript实现拖动元素示例代码
2014/09/01 Javascript
一张Web前端的思维导图分享
2015/07/03 Javascript
深入浅析AngularJS和DataModel
2016/02/16 Javascript
JavaScript File分段上传
2016/03/10 Javascript
微信小程序 scroll-view隐藏滚动条详解
2017/01/16 Javascript
jQuery点击导航栏选中更换样式的实现代码
2017/01/23 Javascript
jquery学习笔记之无new构建详解
2017/12/07 jQuery
vue中的mvvm模式讲解
2019/01/31 Javascript
详解vue的双向绑定原理及实现
2019/05/05 Javascript
js常用正则表达式集锦
2019/05/17 Javascript
vue引用外部JS的两种种方法
2020/01/28 Javascript
[02:41]DOTA2亚洲邀请赛小组赛第三日 赛事回顾
2015/02/01 DOTA
[42:50]NB vs VP 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python调用shell的方法
2013/11/20 Python
python实现感知器
2017/12/19 Python
python kmeans聚类简单介绍和实现代码
2018/02/23 Python
Python3实现的简单工资管理系统示例
2019/03/12 Python
浅谈SciPy中的optimize.minimize实现受限优化问题
2020/02/29 Python
Python flask框架实现浏览器点击自定义跳转页面
2020/06/04 Python
Python面向对象实现方法总结
2020/08/12 Python
伦敦剧院及景点门票:Encore Tickets
2018/07/01 全球购物
Bose美国官网:购买Bose耳机和音箱
2019/03/10 全球购物
印尼极简主义和实惠的在线家具店:Fabelio
2019/03/27 全球购物
开工庆典邀请函范文
2014/01/16 职场文书
宪法宣传周工作方案
2014/05/26 职场文书
战略合作意向书
2014/07/29 职场文书
加强作风建设演讲稿
2014/10/24 职场文书
为什么RedisCluster设计成16384个槽
2021/09/25 Redis