jquery uaMatch源代码


Posted in Javascript onFebruary 14, 2011
// Useragent RegExp 
rwebkit = /(webkit)[ \/]([\w.]+)/, 
ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/, 
rmsie = /(msie) ([\w.]+)/, 
rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/, 
// Keep a UserAgent string for use with jQuery.browser 
userAgent = navigator.userAgent, // For matching the engine and version of the browser 
browserMatch, 
// Use of jQuery.browser is frowned upon. 
// More details: http://docs.jquery.com/Utilities/jQuery.browser 
uaMatch: function( ua ) { 
ua = ua.toLowerCase(); 
var match = rwebkit.exec( ua ) || 
ropera.exec( ua ) || 
rmsie.exec( ua ) || 
ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) || 
[]; 
return { browser: match[1] || "", version: match[2] || "0" }; 
} 
browserMatch = jQuery.uaMatch( userAgent ); 
if ( browserMatch.browser ) { 
jQuery.browser[ browserMatch.browser ] = true; 
jQuery.browser.version = browserMatch.version; 
}

分析:浏览器之间的兼容性问题,这个一个历史遗留问题。痛苦的是,作为一个前端开发人员得为这个兼容性问题买单。我们做开发时,往往要为每种浏览器作出局部的代码调整才能在相应的浏览器中良好的运行。我所知道的方法有两种:1.浏览器检测;2.对象检测。

在jQuery 中只要用行uaMatch()这个函数。用到的关键点有:1.regExp.exec(str);2.navigator.userAgent;

一,regExp.exec(str);用正则表达式来在字符串中查找,并返回一个数组,这个数组的0元素是整个正则匹配,1元素是第一个子匹配,2元素是第二个子匹配,如此类推。

二,navigator.userAgent:是javascript BOM的重要的对象之一,它主要用来返回当前的浏览器和操作系统的信息。

例如:firefox的navigator.userAgetn 的字符串:"Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13"

 IE8的navigator.userAgetn的字符串:"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)".

从各个浏览器的正则表达式可知,第一个子匹配为浏览器的名字,第二个为版本。

Javascript 相关文章推荐
jQuery使用手册之 事件处理
Mar 24 Javascript
推荐40个简单的 jQuery 导航插件和教程(下篇)
Sep 14 Javascript
原生Js页面滚动延迟加载图片实现原理及过程
Jun 24 Javascript
Js判断CSS文件加载完毕的具体实现
Jan 17 Javascript
常用的Javascript设计模式小结
Dec 09 Javascript
Webpack 实现 AngularJS 的延迟加载
Mar 02 Javascript
JS操作JSON方法总结(推荐)
Jun 14 Javascript
Easy UI动态树点击文字实现展开关闭功能
Sep 30 Javascript
vue-auto-focus: 控制自动聚焦行为的 vue 指令方法
Aug 25 Javascript
微信小程序学习笔记之目录结构、基本配置图文详解
Mar 28 Javascript
20个必会的JavaScript面试题(小结)
Jul 02 Javascript
基于Angular 8和Bootstrap 4实现动态主题切换的示例代码
Feb 11 Javascript
AJAX 网页保留浏览器前进后退等功能
Feb 12 #Javascript
一些主流JS框架中DOMReady事件的实现小结
Feb 12 #Javascript
javascript中删除指定数组中指定的元素的代码
Feb 12 #Javascript
JSDoc 介绍使用规范JsDoc的使用介绍
Feb 12 #Javascript
编写可维护面向对象的JavaScript代码[翻译]
Feb 12 #Javascript
URL地址中的#符号使用说明
Feb 12 #Javascript
基于Jquery制作的幻灯片图集效果打包下载
Feb 12 #Javascript
You might like
简单的页面缓冲技术
2006/10/09 PHP
PHP与MySQL开发中页面出现乱码的一种解决方法
2007/07/29 PHP
使用 eAccelerator加速PHP代码的方法
2007/09/30 PHP
php递归函数怎么用才有效
2018/02/24 PHP
运用Windows XP附带的Msicuu.exe、Msizap.exe来彻底卸载顽固程序
2007/04/21 Javascript
jquery 操作单选框,复选框,下拉列表实现代码
2009/10/27 Javascript
读jQuery之二(两种扩展)
2011/06/11 Javascript
jQuery动态添加的元素绑定事件处理函数代码
2011/08/02 Javascript
jquery的冒泡事件的阻止与允许(三种实现方法)
2013/02/01 Javascript
用js的for循环获取radio选中的值
2013/10/21 Javascript
JS获取文件大小方法小结
2015/12/08 Javascript
JavaScript实现图片滑动切换的代码示例分享
2016/03/06 Javascript
ionic 上拉菜单(ActionSheet)实例代码
2016/06/06 Javascript
jquery组件WebUploader文件上传用法详解
2020/10/23 Javascript
jsp 自动编译机制详细介绍
2016/12/01 Javascript
关于不同页面之间实现参数传递的几种方式讨论
2017/02/13 Javascript
jQuery实用密码强度检测
2017/03/02 Javascript
Vue.js常用指令之循环使用v-for指令教程
2017/06/27 Javascript
利用Vue实现一个markdown编辑器实例代码
2019/05/19 Javascript
python 简易计算器程序,代码就几行
2009/08/29 Python
Python中顺序表的实现简单代码分享
2018/01/09 Python
Python numpy 提取矩阵的某一行或某一列的实例
2018/04/03 Python
Python函数返回不定数量的值方法
2019/01/22 Python
django如何实现视图重定向
2019/07/24 Python
Python3 sys.argv[ ]用法详解
2019/10/24 Python
解决jupyter notebook打不开无反应 浏览器未启动的问题
2020/04/10 Python
详解Django配置JWT认证方式
2020/05/09 Python
优秀中专生推荐信
2013/11/17 职场文书
计生工作先进事迹
2014/08/15 职场文书
上课玩手机的检讨书
2014/10/01 职场文书
简单租房协议书(范本)
2014/10/13 职场文书
2015年教师节感恩寄语
2015/03/23 职场文书
初三化学教学反思
2016/02/22 职场文书
《世界多美呀》教学反思
2016/02/22 职场文书
 分享一个Python 遇到数据库超好用的模块
2022/04/06 Python
利用Redis实现点赞功能的示例代码
2022/06/28 Redis