JQUERY1.6 使用方法四 检测浏览器


Posted in Javascript onNovember 23, 2011

userAgent = navigator.userAgent,//User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。

下面分别是各个浏览器的navigator.userAgent

//Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1 --safari

//Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.220 Safari/535.1 --chrome

//Opera/9.80 (Windows NT 5.1; U; Edition Next; zh-cn) Presto/2.8.158 Version/11.50 --opera

//Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.1; .NET4.0C; .NET4.0E; InfoPath.2) ---ie

//Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.24) Gecko/20111103 Firefox/3.6.24 --firefox

//用于匹配响应浏览器表示的正则

rwebkit = /(webkit)[ \/]([\w.]+)/,//webkit
ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,//opera
rmsie = /(msie) ([\w.]+)/,//ie
rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,//mozilla

通过userAgent,我们可以看到chrome可以通过以下方式匹配到,但是因为和safari一样,都带有“safari”,我们可以把它放在rwebkit.前进行匹配

rchrome=/(Chrome)[ \/]([\w.]+)/

同样firefox也可以这么做,把它放在rmozilla前面进行判断

rfirefox=/(Firefox)[ \/]([\w.]+)/

uaMatch: function( ua ) {//主要是获得的浏览器的类型和版本
ua = ua.toLowerCase();//参数为navigator.userAgent。转换成小写,当然也可以在正则匹配里声明不区分大小写(如 /(webkit)[ \/]([\w.]+)/i)

var match = rwebkit.exec( ua ) ||
ropera.exec( ua ) ||
rmsie.exec( ua ) ||
ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) ||
[];//由于使用exec进行匹配,返回的结果是一个整体匹配和响应的子匹配,例如/(Chrome)[ \/]([\w.]+)/,match会返回Chrome/13.0.782.220,match[1]得到chrome,match[2]得到13.0.782.220;

return { browser: match[1] || "", version: match[2] || "0" };
}

//uaMatch是jQuery里的一个方法,在这边开始调用并保存浏览器型号browser和版本version

browserMatch = jQuery.uaMatch( userAgent );//调用uaMatch,并返回对象return { browser: match[1] || "", version: match[2] || "0" };
if ( browserMatch.browser ) {
jQuery.browser[ browserMatch.browser ] = true;//chrome\safari\opera\msie\mozilla ,比如我们要在opera浏览器下执行特定操作的时候,可以通过$.browser.opera来判断是不是opera浏览器(true,false)

jQuery.browser.version = browserMatch.version;//浏览器版本
}

if ( jQuery.browser.webkit ) {
jQuery.browser.safari = true;//因为safari是使用AppleWebKit引擎,由于和chrome都有safari,所以在做另外处理
}

Javascript 相关文章推荐
javascript 兼容FF的onmouseenter和onmouseleave的代码
Jul 19 Javascript
基于jQuery实现的当离开页面时出现提示的实现代码
Jun 27 Javascript
javascript显式类型转换实例分析
Apr 25 Javascript
jQuery validate插件实现ajax验证重复的2种方法
Jan 22 Javascript
AngularJS 模块化详解及实例代码
Sep 14 Javascript
浅谈js继承的实现及公有、私有、静态方法的书写
Oct 28 Javascript
Vue单文件组件的如何使用方式介绍
Jul 28 Javascript
vue项目在安卓低版本机显示空白的原因分析(两种)
Sep 04 Javascript
原生JS实现前端本地文件上传
Sep 08 Javascript
重学 JS:为啥 await 不能用在 forEach 中详解
Apr 15 Javascript
vue iview的菜单组件Mune 点击不高亮的解决方案
Nov 01 Javascript
vue组件开发之tab切换组件使用详解
Aug 21 Javascript
JQuery1.6 使用方法三
Nov 23 #Javascript
jQuery1.6 使用方法二
Nov 23 #Javascript
jQuery1.6 使用方法一
Nov 23 #Javascript
JS 表单验证大全
Nov 23 #Javascript
JavaScript中的16进制字符(改进)
Nov 21 #Javascript
日期处理的js库(迷你版)--自建js库总结
Nov 21 #Javascript
js 完美图片新闻轮转效果,腾讯大粤网首页图片轮转改造而来
Nov 21 #Javascript
You might like
CodeIgniter框架中_remap()使用方法2例
2014/03/10 PHP
php layui实现前端多图上传实例
2019/07/30 PHP
Laravel自动生成UUID,从建表到使用详解
2019/10/24 PHP
Js 时间间隔计算的函数(间隔天数)
2011/11/15 Javascript
禁用页面部分JavaScript方法的具体实现
2013/07/31 Javascript
jquery-syntax动态语法着色示例代码
2014/05/14 Javascript
js确认删除对话框适用于a标签及submit
2014/07/10 Javascript
一个小例子解释如何来阻止Jquery事件冒泡
2014/07/17 Javascript
关于jquery中动态增加select,事件无效的快速解决方法
2016/08/29 Javascript
微信小程序开发实战教程之手势解锁
2016/11/18 Javascript
浅谈vue的几种绑定变量的值 防止其改变的方法
2018/03/01 Javascript
vue自定义表单生成器form-create使用详解
2019/07/19 Javascript
vue.js实现照片放大功能
2020/06/23 Javascript
JavaScript ES 模块的使用
2020/11/12 Javascript
Django查找网站项目根目录和对正则表达式的支持
2015/07/15 Python
python实现备份目录的方法
2015/08/03 Python
Pytorch Tensor的索引与切片例子
2019/08/18 Python
python2.7实现复制大量文件及文件夹资料
2019/08/31 Python
PYTHON EVAL的用法及注意事项解析
2019/09/06 Python
python自动生成model文件过程详解
2019/11/02 Python
Mac 使用python3的matplot画图不显示的解决
2019/11/23 Python
python实现读取类别频数数据画水平条形图案例
2020/04/24 Python
python两种注释用法的示例
2020/10/09 Python
HTML5中的autofocus(自动聚焦)属性介绍
2014/04/23 HTML / CSS
Expedia丹麦:全球领先的旅游网站
2018/03/18 全球购物
澳大利亚领先的运动鞋商店:Hype DC
2018/03/31 全球购物
Mankind美国/加拿大:英国领先的男士美容护发用品公司
2018/12/05 全球购物
医药代表个人求职信范本
2013/12/19 职场文书
考生诚信考试承诺书
2014/05/23 职场文书
政风行风评议工作总结
2014/10/21 职场文书
2015年学校综合治理工作总结
2015/07/20 职场文书
生产设备维护保养制度
2015/08/06 职场文书
nginx配置proxy_pass中url末尾带/与不带/的区别详解
2021/03/31 Servers
7个你应该知道的JS原生错误类型
2021/04/29 Javascript
python实现简单石头剪刀布游戏
2021/10/24 Python
mysql实现将字符串字段转为数字排序或比大小
2022/06/14 MySQL