エントリーシート:jQueryプラグイン拡張によるブラウザカーネルとハウジングのタイプとバージョンの識別

17255 ワード

皆さん、こんにちは、私がここで貼るのは初めてで、足りないところは指摘してください!
通常のB/S開発では、ブラウザのカーネルタイプやバージョン、さらにはブラウザのハウジングタイプやバージョンを知る必要があることがよくあります.特に今日では様々なブラウザが飛び交っています(IEをコアとするブラウザだけでも200種類以上あるそうです).
弟は今日、ブラウザのカーネルとハウジングのタイプとバージョンを識別するためにjQueryベースのプラグイン拡張子を書いた.各種ブラウザのカーネルを識別でき、すでに多種の国内主流ブラウザをサポートしている.
私のJavaScriptコード:(ファイル名:jquery.browsertype-1.0.js)
 1 /**
2 * jQuery : :
3 */
4 jQuery.myPlugin = {
5 //
6 Client: function (){
7 // ( )
8 var engine = { ie:0, webkit:0, gecko:0, opera:0, khtml:0 };
9 // ( :360 、 、 QQ\TT 、 、 、 、 IE、 Chrome、 netscape、 、Opera、 Safari )
10 var shell = { 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 };
11 //
12 var ua = navigator.userAgent.toLowerCase();
13
14 for (var type in engine) {
15 if (typeof type === 'string') {
16 var regexp = 'gecko' === type ? /rv:([\w.]+)/ : RegExp(type + '[ \\/]([\\w.]+)');
17 if (regexp.test(ua)){
18 engine.version = window.opera ? window.opera.version() : RegExp.$1;//
19 engine[type] = parseFloat(engine.version);
20 engine.type = type;//
21 break;
22 }
23 }
24 }
25 for (var type in shell) {
26 if (typeof type === 'string') {
27 var regexp = null;
28 switch(type) {
29 case "se360": regexp = /360se(?:[ \/]([\w.]+))?/; break;
30 case "se": regexp = /se ([\w.]+)/; break;
31 case "qq": regexp = /qqbrowser\/([\w.]+)/; break;
32 case "tt": regexp = /tencenttraveler ([\w.]+)/; break;
33 case "safari": regexp = /version\/([\w.]+)/; break;
34 case "konq": regexp = /konqueror\/([\w.]+)/; break;
35 case "netscape": regexp = /navigator\/([\w.]+)/; break;
36 default: regexp = RegExp(type + '(?:[ \\/]([\\w.]+))?');
37 }
38 if (regexp.test(ua)) {
39 shell.version = window.opera ? window.opera.version() : RegExp.$1 ? RegExp.$1 : 'unknown';//
40 shell[type] = parseFloat(shell.version);
41 shell.type = type;//
42 break;
43 }
44 }
45 }
46
47 // :engine ,shell
48 return { engine: engine, shell: shell };
49 }
50 };
51
52 /**
53 * jQuery : :
54 * jQuery.myBrowser :
55 * :
56 * (1) :alert(" :
:"+jQuery.myBrowser.engine.type+", :"+jQuery.myBrowser.engine.version);
57 * (2) :alert(" :
:"+jQuery.myBrowser.shell.type+", :"+jQuery.myBrowser.shell.version);
58 */
59 jQuery.myBrowser = jQuery.myPlugin.Client();

使用例:(test.html)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title> </title>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load(
"jquery", "1.4.2");
google.load(
"jqueryui", "1.7.2");
</script>
<script type="text/javascript" src="jquery.browsertype-1.0.js"></script>
<script type="text/javascript">
alert(
"
"+jQuery.myBrowser.engine.type+", :"+jQuery.myBrowser.engine.version);
alert(
"
"+jQuery.myBrowser.shell.type+", :"+jQuery.myBrowser.shell.version);
document.writeln(
" ——>"+jQuery.myBrowser.engine.type+""+jQuery.myBrowser.engine.version+"<br>");
document.writeln(
" ——>"+jQuery.myBrowser.shell.type+""+jQuery.myBrowser.shell.version+"<br>");
</script>
</head>
<body>
<br/><br/>
</body>
</html>