jquery uaMatch源代码
复制代码 代码如下:
// Useragent RegExp
rwebkit = /(webkit)[ /]([w.]+)/,
ropera = /(opera)(?:.*version)?[ /]([w.]+)/,
rmsie = /(msie) ([w.]+)/,
rmozilla = /(mozilla)(?:.*? rv:([w.]+))?/,
// Keep a UserAgent string for use with ser
userAgent = Agent,
// For matching the engine and version of the browser
browserMatch,
// Use of ser is frowned upon.
// More details:
uaMatch: function( ua ) {
ua = werCase();
var match = ( ua ) ||
( ua ) ||
( ua ) ||
xOf("compatible") < 0 && ( ua ) ||
[];
return { browser: match[1] || "", version: match[2] || "0" };
}
browserMatch = tch( userAgent );
if ( ser ) {
ser[ ser ] = true;
ion = ion;
}
分析:浏览器之间的兼容性问题,这个一个历史遗留问题。痛苦的是,作为一个前端开发人员得为这个兼容性问题买单。我们做开发时,往往要为每种浏览器作出局部的代码调整才能在相应的浏览器中良好的运行。我所知道的方法有两种:1.浏览器检测;2.对象检测。
在jQuery 中只要用行uaMatch()这个函数。用到的`关键点有:(str);Agent;
一,(str);用正则表达式来在字符串中查找,并返回一个数组,这个数组的0元素是整个正则匹配,1元素是第一个子匹配,2元素是第二个子匹配,如此类推。
二,Agent:是javascript BOM的重要的对象之一,它主要用来返回当前的浏览器和操作系统的信息。
例如:firefox的Agetn 的字符串:"Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:) Gecko/20101203 Firefox/3.6.13"
IE8的Agetn的字符串:"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; CLR 1.1.4322; CLR 2.0.50727; CLR 3.0.4506.2152; CLR 3.5.30729)".
从各个浏览器的正则表达式可知,第一个子匹配为浏览器的名字,第二个为版本。