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 相关文章推荐
JavaScript对象链式操作代码(jquery)
Jul 04 Javascript
html中使用javascript调用本地程序(exe、doc等)实现代码
Apr 26 Javascript
js 通过cookie实现刷新不变化树形菜单
Oct 30 Javascript
js预加载图片方法汇总
Jun 15 Javascript
javascript实现添加附件功能的方法
Nov 18 Javascript
基于BootStrap Metronic开发框架经验小结【七】数据的导入、导出及附件的查看处理
May 12 Javascript
Vue实现自带的过滤器实例
Mar 09 Javascript
用JavaScript和jQuery实现瀑布流
Mar 19 Javascript
微信小程序实现表单校验功能
Mar 30 Javascript
vue.js引入外部CSS样式和外部JS文件的方法
Jan 06 Javascript
Vue实现购物车实例代码两则
May 30 Javascript
vue自定义树状结构图的实现方法
Oct 18 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原生模板引擎 最简单的模板引擎
2012/04/25 PHP
PHP批量检测并去除文件BOM头代码实例
2014/05/08 PHP
PHP中SSO Cookie登录分析和实现
2015/11/06 PHP
浅谈mysql_query()函数的返回值问题
2016/09/05 PHP
PHP ElasticSearch做搜索实例讲解
2020/02/05 PHP
js 强制弹出窗口代码研究-又一款代码
2010/03/20 Javascript
javascript preload&amp;lazy load
2010/05/13 Javascript
javascript 日期时间 转换的方法
2013/02/21 Javascript
jquery struts 验证唯一标识(公用方法)
2013/03/27 Javascript
解析dom中的children对象数组元素firstChild,lastChild的使用
2013/07/10 Javascript
jQuery中:selected选择器用法实例
2015/01/04 Javascript
不得不分享的JavaScript常用方法函数集(下)
2015/12/25 Javascript
jQuery validate插件实现ajax验证重复的2种方法
2016/01/22 Javascript
Bootstrap学习笔记之css组件(3)
2016/06/07 Javascript
基于Bootstrap的Metronic框架实现条码和二维码的生成及打印处理操作
2016/08/29 Javascript
jQuery插件扩展实例【添加回调函数】
2016/11/26 Javascript
利用node.js制作命令行工具方法教程(一)
2017/06/22 Javascript
Vuex入门到上手教程
2018/06/20 Javascript
Vue-不允许嵌套式的渲染方法
2018/09/13 Javascript
解决webpack多页面内存溢出的方法示例
2019/10/08 Javascript
Python使用itertools模块实现排列组合功能示例
2018/07/02 Python
python中的Elasticsearch操作汇总
2019/10/30 Python
Python生成个性签名图片获取GUI过程解析
2019/12/16 Python
python读取yaml文件后修改写入本地实例
2020/04/27 Python
win7上tensorflow2.2.0安装成功 引用DLL load failed时找不到指定模块 tensorflow has no attribute xxx 解决方法
2020/05/20 Python
土耳其家居建材网站:Koçtaş
2016/11/22 全球购物
Notino罗马尼亚网站:购买香水和化妆品
2019/07/20 全球购物
世界排名第一的运动鞋市场:Flight Club
2020/01/03 全球购物
美国新娘礼品店:The Paisley Box
2020/09/08 全球购物
Java面试题:请说出如下代码的输出结果
2013/04/22 面试题
写给女朋友的道歉信
2014/01/12 职场文书
教师批评与自我批评范文
2014/10/15 职场文书
部门优秀员工推荐信
2015/03/24 职场文书
结婚通知短信大全
2015/04/17 职场文书
幼儿园庆元旦主持词
2015/07/06 职场文书
浅谈JS的二进制家族
2021/05/09 Javascript