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 相关文章推荐
jQuery取消ajax请求的方法
Jun 09 Javascript
JavaScript中的Math.LN2属性用法详解
Jun 12 Javascript
基于Bootstrap重置输入框内容按钮插件
May 12 Javascript
webpack独立打包和缓存处理详解
Apr 03 Javascript
JavaScript之iterable_动力节点Java学院整理
Jun 29 Javascript
如何理解Vue的render函数的具体用法
Aug 30 Javascript
解决easyui日期时间框ie的兼容的问题
Mar 01 Javascript
React中的render何时执行过程
Apr 13 Javascript
浅谈如何通过node.js对数据进行MD5加密
May 16 Javascript
利用Promise自定义一个GET请求的函数示例代码
Mar 20 Javascript
js canvas实现5张图片合成一张图片
Jul 15 Javascript
如何实现一个简易版的vuex持久化工具
Sep 11 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
wordpress之wp-settings.php
2007/08/17 PHP
php抓取https的内容的代码
2010/04/06 PHP
php 操作符与控制结构
2012/03/07 PHP
Fine Uploader文件上传组件应用介绍
2013/01/06 PHP
PHP中的output_buffering详细介绍
2014/09/27 PHP
Laravel重写用户登录简单示例
2016/10/08 PHP
zend框架实现支持sql server的操作方法
2016/12/08 PHP
PHP异常处理定义与使用方法分析
2017/07/25 PHP
php和vue配合使用技巧和方法
2019/05/09 PHP
setTimeout函数兼容各主流浏览器运行执行效果实例
2013/06/13 Javascript
使用jQuery和PHP实现类似360功能开关效果
2014/02/12 Javascript
jqueryUI里拖拽排序示例分析
2015/02/26 Javascript
JS实现在页面随时自定义背景颜色的方法
2015/02/27 Javascript
EasyUi中的Combogrid 实现分页和动态搜索远程数据
2016/04/01 Javascript
JS与Ajax Get和Post在使用上的区别实例详解
2016/06/08 Javascript
Bootstrap的Refresh Icon也spin起来
2016/07/13 Javascript
AngularJS中的Promise详细介绍及实例代码
2016/12/13 Javascript
JavaScript实现三级联动效果
2017/07/15 Javascript
JavaScript实现的仿新浪微博原生态输入字数即时检查功能【兼容IE6】
2017/09/26 Javascript
7个好用的JavaScript技巧分享(译)
2019/05/07 Javascript
JavaScript图片旋转效果实现方法详解
2020/06/28 Javascript
Jquery如何使用animation动画效果改变背景色的代码
2020/07/20 jQuery
Python 判断文件或目录是否存在的实例代码
2018/07/19 Python
Python的Tkinter点击按钮触发事件的例子
2019/07/19 Python
使用pip安装python库的多种方式
2019/07/31 Python
详解Anaconda 的安装教程
2020/09/23 Python
Python web框架(django,flask)实现mysql数据库读写分离的示例
2020/11/18 Python
HTML5实现移动端复制功能
2018/04/19 HTML / CSS
澳大利亚墨尔本的在线时装店:LORETA
2018/09/14 全球购物
国际商务专业职业生涯规划书范文
2014/01/17 职场文书
村当支部个人对照检查材料思想汇报
2014/10/06 职场文书
西游降魔篇观后感
2015/06/15 职场文书
2015年教师节广播稿
2015/08/19 职场文书
postgresql无序uuid性能测试及对数据库的影响
2021/06/11 PostgreSQL
Python访问Redis的详细操作
2021/06/26 Python
MYSQL如何查看进程和kill进程
2022/03/13 MySQL