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中form验证出错信息的查看方法
Oct 08 Javascript
jquery获取元素值的方法(常见的表单元素)
Nov 15 Javascript
jquery中$(#form :input)与$(#form input)的区别
Aug 18 Javascript
Jquery基础教程之DOM操作
Aug 19 Javascript
两种JavaScript的AES加密方式(可与Java相互加解密)
Aug 02 Javascript
Bootstrap对话框使用实例讲解
Sep 24 Javascript
基于JQuery及AJAX实现名人名言随机生成器
Feb 10 Javascript
微信小程序基于slider组件动态修改标签透明度的方法示例
Dec 04 Javascript
微信小程序左滑动显示菜单功能的实现
Jun 14 Javascript
mpvue中使用flyjs全局拦截的实现代码
Sep 13 Javascript
微信小程序云开发之使用云数据库
May 17 Javascript
js实现select下拉框选择
Jan 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
PHP提示Warning:phpinfo() has been disabled函数禁用的解决方法
2014/12/17 PHP
php随机生成数字字母组合的方法
2015/03/18 PHP
PHP生成制作验证码的简单实例
2016/06/12 PHP
php正则修正符用法实例详解
2016/12/29 PHP
PHP和MYSQL实现分页导航思路详解
2017/04/11 PHP
JavaScript中的Location地址对象
2008/01/16 Javascript
jQuery ctrl+Enter shift+Enter实现代码
2010/02/07 Javascript
JavaScript中链式调用之研习
2011/04/07 Javascript
js或者jquery判断图片是否加载完成实现代码
2013/03/20 Javascript
javascript操作css属性
2013/12/30 Javascript
AngularJS Bootstrap详细介绍及实例代码
2016/07/28 Javascript
原生JS检测CSS3动画是否结束的方法详解
2019/01/27 Javascript
vue任意关系组件通信与跨组件监听状态vue-communication
2020/10/18 Javascript
python中的多线程实例教程
2014/08/27 Python
python统计日志ip访问数的方法
2015/07/06 Python
全面解析Python的While循环语句的使用方法
2015/10/13 Python
python爬虫获取多页天涯帖子
2018/02/23 Python
python smtplib模块实现发送邮件带附件sendmail
2018/05/22 Python
使用python将时间转换为指定的格式方法
2018/11/12 Python
Python两台电脑实现TCP通信的方法示例
2019/05/06 Python
pytorch 图像中的数据预处理和批标准化实例
2020/01/15 Python
tensorflow 变长序列存储实例
2020/01/20 Python
Tensorflow 模型转换 .pb convert to .lite实例
2020/02/12 Python
TensorFlow2.X使用图片制作简单的数据集训练模型
2020/04/08 Python
荷兰之家英文站:Holland at Home
2016/10/26 全球购物
美国Jeep配件购物网站:Morris 4×4 Center
2019/05/01 全球购物
某公司Java工程师面试题笔试题
2016/03/27 面试题
杭州联环马网络笔试题面试题
2013/08/04 面试题
初三开学计划书
2014/04/27 职场文书
上海世博会口号
2014/06/19 职场文书
个人作风纪律整顿整改措施
2014/10/25 职场文书
护理实习生带教计划
2015/01/16 职场文书
反腐倡廉观后感
2015/06/08 职场文书
领导新年致辞2016
2015/07/29 职场文书
Python入门学习之类的相关知识总结
2021/05/25 Python
MySQL和Oracle批量插入SQL的通用写法示例
2021/11/17 MySQL