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初学者的编写开发的七个细节
Jan 11 Javascript
AngularJS入门教程(零):引导程序
Dec 06 Javascript
Javascript编写2048小游戏
Jul 07 Javascript
JavaScript拖拽、碰撞、重力及弹性运动实例分析
Jan 08 Javascript
Bootstrap源码解读导航(6)
Dec 23 Javascript
基于vue实现多引擎搜索及关键字提示
Mar 16 Javascript
Vuex之理解Getters的用法实例
Apr 19 Javascript
EasyUI Tree树组件无限循环的解决方法
Sep 27 Javascript
Angular实现预加载延迟模块的示例
Oct 12 Javascript
基于jQuery Ajax实现下拉框无刷新联动
Dec 06 jQuery
Vue2.0 实现单选互斥的方法
Apr 13 Javascript
Js经典案例的实例代码
May 10 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
.htaccess文件保护实例讲解
2011/02/06 PHP
yii2简单使用less代替css示例
2017/03/10 PHP
php实现的表单验证类完整示例
2019/08/13 PHP
laravel5.6中的外键约束示例
2019/10/23 PHP
JavaScript面向对象之体会[总结]
2008/11/13 Javascript
JavaScript 字符串处理函数使用小结
2010/12/02 Javascript
javascript学习基础笔记之DOM对象操作
2011/11/03 Javascript
JS 在指定数组中随机取出N个不重复的数据
2014/06/10 Javascript
ajax+jQuery实现级联显示地址的方法
2015/05/06 Javascript
jQuery动画效果图片轮播特效
2016/01/12 Javascript
JS代码实现根据时间变换页面背景效果
2016/06/16 Javascript
javascript特效实现——当前时间和倒计时效果的简单实例
2016/07/20 Javascript
详解javascript事件绑定使用方法
2016/10/20 Javascript
VUE元素的隐藏和显示(v-show指令)
2017/06/23 Javascript
Node.js 中使用 async 函数的方法
2017/11/20 Javascript
javascriptvoid(0)含义以及与&quot;#&quot;的区别讲解
2019/01/19 Javascript
详解基于 Node.js 的轻量级云函数功能实现
2019/07/08 Javascript
JavaScript使用setTimeout实现倒计时效果
2021/02/19 Javascript
python访问纯真IP数据库的代码
2011/05/19 Python
python3+PyQt5实现柱状图
2018/04/24 Python
python3实现字符串的全排列的方法(无重复字符)
2018/07/07 Python
关于Python 的简单栅格图像边界提取方法
2019/07/05 Python
Python django框架开发发布会签到系统(web开发)
2020/02/12 Python
python模拟点击网页按钮实现方法
2020/02/25 Python
Python实现鼠标自动在屏幕上随机移动功能
2020/03/14 Python
python学生管理系统的实现
2020/04/05 Python
精油和天然健康美容产品:Art Naturals
2018/01/27 全球购物
工程专业毕业生自荐信范文
2013/12/25 职场文书
党课学习思想汇报
2014/01/02 职场文书
怎样填写就业意向
2014/04/02 职场文书
车辆转让协议书
2014/04/15 职场文书
义和团口号
2014/06/17 职场文书
法律进社区活动总结
2015/05/07 职场文书
创业计划书之家教中心
2019/09/25 职场文书
python实现腾讯滑块验证码识别
2021/04/27 Python
PHP设计模式(观察者模式)
2021/07/07 PHP