cnzz统计检测浏览器原理(跨浏览器开发实用源码)

cnzz根据用户代理字符串识别浏览器类型 ,JavaScript实现代码如下 :

1 (function() {
2 var Client = function() {
3 var engine = { ie: 0, webkit: 0, gecko: 0, opera: 0, khtml: 0 },
4 browser = { se360: 0, se: 0, maxthon: 0, qq: 0, tt: 0, theworld: 0, cometbrowser: 0, greenbrowser: 0, ie: 0, chrome: 0, netscape: 0, firefox: 0, opera: 0, safari: 0, konq: 0 },
5 ua = navigator.userAgent.toLowerCase();
6 for (var type in engine) {
7 if (typeof type === 'string') {
8 var regexp = 'gecko' === type ? /rv:([\w.]+)/ : RegExp(type + '[ \\/]([\\w.]+)');
9 if (regexp.test(ua)) {
10 engine.version = window.opera ? window.opera.version() : RegExp.$1;
11 engine[type] = parseFloat(engine.version);
12 engine.type = type;
13 break;
14 }
15 }
16 }
17 for (var type in browser) {
18 if (typeof type === 'string') {
19 var regexp = null;
20 switch(type) {
21 case "se360": regexp = /360se(?:[ \/]([\w.]+))?/; break;
22 case "se": regexp = /se ([\w.]+)/; break;
23 case "qq": regexp = /qqbrowser\/([\w.]+)/; break;
24 case "tt": regexp = /tencenttraveler ([\w.]+)/; break;
25 case "safari": regexp = /version\/([\w.]+)/; break;
26 case "konq": regexp = /konqueror\/([\w.]+)/; break;
27 case "netscape": regexp = /navigator\/([\w.]+)/; break;
28 default: regexp = RegExp(type + '(?:[ \\/]([\\w.]+))?');
29 }
30 if (regexp.test(ua)) {
31 browser.version = window.opera ? window.opera.version() : RegExp.$1 ? RegExp.$1 : 'unknown';
32 browser[type] = parseFloat(browser.version);
33 browser.type = type;
34 break;
35 }
36 }
37 }
38 return { engine: engine, browser: browser };
39 }();
40 window.Client = Client;
41 })();

你可以像下面这样使用Client对象 :

1 document.writeln('您的浏览器内核 → '+Client.engine.type+':'+Client.engine.version);
2
3  var browser = { se360: '360安全浏览器', se: '搜狗高速浏览器', maxthon: '遨游', qq: 'QQ浏览器', tt: '腾讯TT', theworld: '世界之窗', cometbrowser: '彗星浏览器', greenbrowser: 'GreenBrowser', ie: '微软IE', chrome: '谷歌Chrome', netscape: '网景', firefox: '火狐', opera: 'Opera', safari: '苹果Safari', konq: 'Konqueror' };
4
5 document.writeln('您的浏览器 → '+browser[Client.browser.type]+':'+Client.browser.version);
6
7  if(Client.engine.ie) { alert('您使用的是IE内核浏览器!'); };
8
9  if(Client.engine.ie && Client.engine.ie < 8 ) { alert('您使用的是IE内核浏览器,但是版本低于IE8!'); };

以上代码在所有主流浏览器下完美通过测试,包括CNZZ统计的所有浏览器类型。 

posted @ 2011-05-17 17:14  诚诚  阅读(1179)  评论(0编辑  收藏  举报