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 autocomplete插件修改
Apr 17 Javascript
jQuery随机切换图片的小例子
Apr 18 Javascript
javascript中的return和闭包函数浅析
Jun 06 Javascript
jQuery DOM插入节点操作指南
Mar 03 Javascript
简介可以自动完成UI的AngularJS工具angular-smarty
Jun 23 Javascript
js自调用匿名函数的三种写法(推荐)
Aug 19 Javascript
jquery加载单文件vue组件的方法
Jun 20 jQuery
微信小程序 POST请求的实例详解
Sep 29 Javascript
vue通过style或者class改变样式的实例代码
Oct 30 Javascript
Layui实现数据表格默认全部显示(不要分页)
Oct 26 Javascript
基于JavaScript实现表格隔行换色
May 08 Javascript
JavaScript缺少insertAfter解决方案
Jul 03 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
纯PHP生成的一个树叶图片画图例子
2014/04/16 PHP
PHP生成迅雷、快车、旋风等软件的下载链接代码实例
2014/05/12 PHP
php数组索引的Key加引号和不加引号的区别
2014/08/19 PHP
php用户登录之cookie信息安全分析
2016/05/13 PHP
PHP htmlspecialchars_decode()函数用法讲解
2019/03/01 PHP
Laravel路由研究之domain解决多域名问题的方法示例
2019/04/04 PHP
一个网马的tips实现分析
2010/11/28 Javascript
CSS鼠标响应事件经过、移动、点击示例介绍
2013/09/04 Javascript
js取float型小数点后两位数的方法
2014/01/18 Javascript
js处理自己不能定义二维数组的方法详解
2014/03/03 Javascript
javascript正则表达式之search()用法实例
2015/01/19 Javascript
再谈JavaScript异步编程
2016/01/27 Javascript
angular.js分页代码的实例
2016/07/27 Javascript
深入浅析Node.js单线程模型
2017/07/10 Javascript
[02:56]DOTA2矮人直升机 英雄基础教程
2013/11/26 DOTA
[57:38]2018DOTA2亚洲邀请赛3月30日 小组赛A组 OpTic VS OG
2018/03/31 DOTA
使用Python的Tornado框架实现一个一对一聊天的程序
2015/04/25 Python
pandas中Timestamp类用法详解
2017/12/11 Python
python中嵌套函数的实操步骤
2019/02/27 Python
python实现雪花飘落效果实例讲解
2019/06/18 Python
基于python3生成标签云代码解析
2020/02/18 Python
BeautifulSoup中find和find_all的使用详解
2020/12/07 Python
JD Sports意大利:英国篮球和运动时尚的领导者
2017/10/29 全球购物
YesBabyOnline美国:全球性的在线婚纱礼服工厂
2018/05/05 全球购物
Shopping happy life西班牙:以最优惠的价格提供最好的时尚配饰
2020/03/13 全球购物
火锅店创业计划书范文
2014/02/02 职场文书
小学生开学感言
2014/02/28 职场文书
小学生学习感言
2014/03/10 职场文书
求职信标题怎么写
2014/05/26 职场文书
经典禁毒标语
2014/06/16 职场文书
设备收款委托书范本
2014/10/02 职场文书
幼儿教师个人总结
2015/02/05 职场文书
国王的演讲观后感
2015/06/03 职场文书
电视新闻稿
2015/07/17 职场文书
毕业设计工作总结
2015/08/14 职场文书
Python集合set()使用的方法详解
2022/03/18 Python