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 相关文章推荐
js 匿名调用实现代码
Jun 19 Javascript
取选中的radio的值
Jan 11 Javascript
ExtJS 学习专题(一) 如何应用ExtJS(附实例)
Mar 11 Javascript
Javascript 中的 &amp;&amp; 和 || 使用小结
Apr 25 Javascript
JavaScript window.document的属性、方法和事件小结
Oct 24 Javascript
js带缩略图的图片轮播效果代码分享
Sep 14 Javascript
仿百度换肤功能的简单实例代码
Jul 11 Javascript
AngularJS实现的回到顶部指令功能实例
May 17 Javascript
JavaScrpt中如何使用 cookie 设置查看与删除功能
Jul 09 Javascript
Express的HTTP重定向到HTTPS的方法
Jun 06 Javascript
Angular Excel 导入与导出的实现代码
Apr 17 Javascript
微信小程序获取当前位置和城市名
Nov 13 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 人员权限管理(RBAC)实例(推荐)
2017/05/24 PHP
PHP程序员简单的开展服务治理架构操作详解(二)
2020/05/14 PHP
JavaScript 浏览器验证代码(来自discuz)
2010/07/17 Javascript
javascript修改表格背景色实例代码分享
2013/12/10 Javascript
JSP基于Bootstrap分页显示实例解析
2016/06/12 Javascript
AngularJS中的DOM操作用法分析
2016/11/04 Javascript
HTML5+jQuery实现搜索智能匹配功能
2017/03/24 jQuery
详解webpack中的hash、chunkhash、contenthash区别
2018/01/05 Javascript
vue 注册组件的使用详解
2018/05/05 Javascript
小程序实现留言板
2018/11/02 Javascript
在Create React App中使用CSS Modules的方法示例
2019/01/15 Javascript
es6数组includes()用法实例分析
2020/04/18 Javascript
vue-router路由懒加载及实现的3种方式
2021/02/28 Vue.js
Django1.3添加app提示模块不存在的解决方法
2014/08/26 Python
详解python中字典的循环遍历的两种方式
2017/02/07 Python
python 平衡二叉树实现代码示例
2018/07/07 Python
Flask框架各种常见装饰器示例
2018/07/17 Python
聊聊python里如何用Borg pattern实现的单例模式
2019/06/06 Python
使用Python画出小人发射爱心的代码
2019/11/23 Python
jupyter 实现notebook中显示完整的行和列
2020/04/09 Python
Python + opencv对拍照得到的图片进行背景去除的实现方法
2020/11/18 Python
用python监控服务器的cpu,磁盘空间,内存,超过邮件报警
2021/01/29 Python
Python 中Operator模块的使用
2021/01/30 Python
经典c++面试题六
2012/01/18 面试题
铭立家具面试题
2012/12/06 面试题
介绍一下javax.servlet.Servlet接口及其主要方法
2015/11/30 面试题
后勤人员自我鉴定
2013/10/20 职场文书
数控专业推荐信范文
2013/12/02 职场文书
新郎新娘婚礼答谢词
2014/01/11 职场文书
市优秀教师事迹材料
2014/02/05 职场文书
项目总经理岗位职责
2014/02/14 职场文书
工人先进事迹材料
2014/12/26 职场文书
公司业务员管理制度
2015/08/05 职场文书
解决Golang中ResponseWriter的一个坑
2021/04/27 Golang
MySQL命令无法输入中文问题的解决方式
2021/08/30 MySQL
python的列表生成式,生成器和generator对象你了解吗
2022/03/16 Python