jQuery.browser的实现方式
jQuery.browser的实现方式
jQuery中的browser对象
jQuery中的browser对象保存了浏览器的信息。跨浏览器是大多数客户端JS库必须具备的基本特性,判断浏览的类型和版本号并保存在对象中,就是为了针对不同浏览器采取不同的策略。
下面的代码用于展示jQuery.browser的用法:
<script type="text/javascript" src="jquery.js"></script><script>document.write('$.browser.webkit: ' + $.browser.webkit + '<br />');document.write('$.browser.opera: ' + $.browser.opera + '<br />');document.write('$.browser.msie: ' + $.browser.msie + '<br />');document.write('$.browser.mozilla: ' + $.browser.mozilla + '<br />');document.write('$.browser.version: ' + $.browser.version);</script>
$.browser.webkit: undefined$.browser.opera: undefined$.browser.msie: true$.browser.mozilla: undefined$.browser.version: 8.0
ua = window.navigator.userAgent;document.write('user agent:<br />' + ua);
user agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.60 Safari/534.24
user agent:Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1
user agent:Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; Tablet PC 2.0)
user agent:Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3
user agent:Opera/9.80 (Windows NT 6.1; U; Edition IBIS; zh-cn) Presto/2.8.131 Version/11.10
ua = window.navigator.userAgent;document.write('user agent:<br />' + ua + '<br /><br />');match = /WebKit\/([\w.]+)/.exec(ua);if (match) {document.write('Webkit Kernal<br />');document.write('Version: ' + match[1]);} else {document.write('Not Webkit Kernal');}
ua = window.navigator.userAgent;document.write('user agent:<br />' + ua + '<br /><br />');match = /MSIE ([\w.]+)/.exec(ua);if (match) {document.write('IE Kernal<br />');document.write('Version: ' + match[1]);} else {document.write('Not IE Kernal');}
ua = window.navigator.userAgent;document.write('user agent:<br />' + ua + '<br /><br />');match = /Mozilla(?:.*? rv:([\w.]+))/.exec(ua);if (match) {document.write('Mozilla Kernal<br />');document.write('Version: ' + match[1]);} else {document.write('Not Mozilla Kernal');}
ua = window.navigator.userAgent;document.write('user agent:<br />' + ua + '<br /><br />');match = /Opera(?:.*Version)\/([\w.]+)/.exec(ua);if (match) {document.write('Opera Kernal<br />');document.write('Version: ' + match[1]);} else {document.write('Not Opera Kernal');}
$ = function() { function uaMatch(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" }; } var rwebkit = /(webkit)\/([\w.]+)/, ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/, rmsie = /(msie) ([\w.]+)/, rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/, browser = {}, ua = window.navigator.userAgent, browserMatch = uaMatch(ua); if (browserMatch.browser) { browser[browserMatch.browser] = true; browser.version = browserMatch.version; } return { browser: browser }}();
<script type="text/javascript" src="jquery-browser.js"></script><script>document.write('$.browser.webkit: ' + $.browser.webkit + '<br />');document.write('$.browser.opera: ' + $.browser.opera + '<br />');document.write('$.browser.msie: ' + $.browser.msie + '<br />');document.write('$.browser.mozilla: ' + $.browser.mozilla + '<br />');document.write('$.browser.version: ' + $.browser.version + '<br />');</script>