OSDN Git Service

Version 0.6.165, fix Node.prototype.kill.
[pettanr/clientJs.git] / 0.6.x / js / 01_core / 02_XUA.js
index ecdbe23..61230c8 100644 (file)
@@ -4,12 +4,13 @@
 // ------------------------------------------------------------------------- //\r
 \r
 /**\r
- * UserAgent ã\81®関する定数を保持する。\r
+ * UserAgent ã\81«関する定数を保持する。\r
  * @namespace X.UA\r
  * @alias X.UA\r
  * @type {object}\r
  */\r
-var X_UA = X[ 'UA' ] = {};\r
+var X_UA = X[ 'UA' ] = {},\r
+       X_UA_classNameForHTML = 'js-enabled ';\r
 \r
 (function(){\r
        var dua  = navigator.userAgent,\r
@@ -69,15 +70,17 @@ var X_UA = X[ 'UA' ] = {};
                                 * @type {boolean}\r
                                 */\r
                                X_UA[ 'iPhone_4s' ]  = true;\r
+                               \r
+                               if( i ){\r
+                                       /**\r
+                                        * iPhone3GS以下\r
+                                        * @alias X.UA.iPhone_3GS\r
+                                        * @type {boolean}\r
+                                        */\r
+                                       X_UA[ 'iPhone_3GS' ]  = true;\r
+                               };                              \r
                        };\r
-                       if( v && i ){\r
-                               /**\r
-                                * iPhone3GS以下\r
-                                * @alias X.UA.iPhone_3GS\r
-                                * @type {boolean}\r
-                                */\r
-                               X_UA[ 'iPhone_3GS' ]  = true;\r
-                       };\r
+\r
                        //alert( 'iPhone ' + ( X_UA[ 'iPhone_3GS' ]  ? '3GS以下' : X_UA[ 'iPhone_4s' ]  ? '4s以下' : '5以上' ) );\r
                };\r
                if( sys === 'iPad' ){\r
@@ -101,14 +104,7 @@ var X_UA = X[ 'UA' ] = {};
                         * @type {boolean}\r
                         */\r
                        X_UA[ 'iPod' ]    = true;\r
-                       if( v && i ){\r
-                               /**\r
-                                * iPod3以下\r
-                                * @alias X.UA.iPod_3\r
-                                * @type {boolean}\r
-                                */\r
-                               X_UA[ 'iPod_3' ]  = true;\r
-                       };\r
+\r
                        if( v ){\r
                                /**\r
                                 * iPod4以下\r
@@ -116,6 +112,15 @@ var X_UA = X[ 'UA' ] = {};
                                 * @type {boolean}\r
                                 */\r
                                X_UA[ 'iPod_4' ]  = true;\r
+                               \r
+                               if( i ){\r
+                                       /**\r
+                                        * iPod3以下\r
+                                        * @alias X.UA.iPod_3\r
+                                        * @type {boolean}\r
+                                        */\r
+                                       X_UA[ 'iPod_3' ]  = true;\r
+                               };                              \r
                        };\r
                        //alert( 'iPod touch ' + ( X_UA[ 'iPod_3' ]  ? '3以下' : X_UA[ 'iPod_4' ] ? '4以下' : '5以上' ) );\r
                };\r
@@ -277,75 +282,87 @@ var X_UA = X[ 'UA' ] = {};
                 * @type {number}\r
                 */\r
                X_UA[ 'Trident' ]  = parseFloat(dav.split('Trident/')[1]) || 0;\r
-               /**\r
-                * documentモードを考慮したIEのバージョン\r
-                * @alias X.UA.IE\r
-                * @type {number}\r
-                */\r
-               X_UA[ 'IE' ]   = v = document.documentMode || X_UA[ '_IE' ];\r
+               \r
                tridentToVer       = X_UA[ 'Trident' ] ? ( X_UA[ 'Trident' ] + 4 | 0 ) : X_UA[ '_IE' ];\r
                /**\r
                 * IE10 以上の互換モードを使用している場合、そのバージョン\r
                 * @alias X.UA.IECompat\r
                 * @type {number}\r
                 */\r
-               X_UA[ 'IECompat' ] = /* v !== X_UA[ '_IE' ] || */ tridentToVer !== X_UA[ '_IE' ] && tridentToVer;\r
+               if( tridentToVer !== X_UA[ '_IE' ] ) X_UA[ 'IECompat' ] = tridentToVer;\r
+               /**\r
+                * documentモードを考慮したIEのバージョン\r
+                * @alias X.UA.IE\r
+                * @type {number}\r
+                */\r
+               X_UA[ 'IE' ]   = v = document.documentMode || tridentToVer;\r
                /**\r
                 * @alias X.UA.IE4\r
                 * @type {boolean}\r
                 */\r
-               X_UA[ 'IE4' ]      = v && v < 5;\r
+               if( v && v < 4.5 ) X_UA[ 'IE4' ] = true;\r
+               /**\r
+                * @alias X.UA.IE45\r
+                * @type {boolean}\r
+                */\r
+               if( v && 4.5 <= v && v < 5 ) X_UA[ 'IE45' ] = true;\r
+               /**\r
+                * @alias X.UA.IE4x\r
+                * @type {boolean}\r
+                */\r
+               if( X_UA[ 'IE4' ] || X_UA[ 'IE45' ] ) X_UA[ 'IE4x' ] = true;\r
                /**\r
                 * @alias X.UA.IE5\r
                 * @type {boolean}\r
                 */\r
-               X_UA[ 'IE5' ]      = 5 <= v && v < 5.5;\r
+               if( 5 <= v && v < 5.5 ) X_UA[ 'IE5' ] = true;\r
                /**\r
                 * @alias X.UA.IE55\r
                 * @type {boolean}\r
                 */\r
-               X_UA[ 'IE55' ]     = 5.5 <= v && v < 6;\r
+               if( 5.5 <= v && v < 6 ) X_UA[ 'IE55' ] = true;\r
                /**\r
                 * @alias X.UA.IE5x\r
                 * @type {boolean}\r
                 */\r
-               X_UA[ 'IE5x' ]     = X_UA[ 'IE5' ] || X_UA[ 'IE55' ];\r
+               if( X_UA[ 'IE5' ] || X_UA[ 'IE55' ] ) X_UA[ 'IE5x' ] = true;\r
                /**\r
                 * @alias X.UA.IE6\r
                 * @type {boolean}\r
                 */\r
-               X_UA[ 'IE6' ]      = 6 <= v && v < 7;\r
+               if( 6 <= v && v < 7 ) X_UA[ 'IE6' ] = true;\r
                /**\r
                 * @alias X.UA.IE7\r
                 * @type {boolean}\r
                 */\r
-               X_UA[ 'IE7' ]      = 7 <= v && v < 8;\r
+               if( 7 <= v && v < 8 ) X_UA[ 'IE7' ] = true;\r
                /**\r
                 * @alias X.UA.IE8\r
                 * @type {boolean}\r
                 */\r
-               X_UA[ 'IE8' ]      = 8 <= v && v < 9;\r
+               if( 8 <= v && v < 9 ) X_UA[ 'IE8' ] = true;\r
                /**\r
                 * @alias X.UA.IE9\r
                 * @type {boolean}\r
                 */\r
-               X_UA[ 'IE9' ]      = 9 <= v && v < 10;\r
+               if( 9 <= v && v < 10 ) X_UA[ 'IE9' ] = true;\r
                /**\r
                 * @alias X.UA.MacIE\r
                 * @type {boolean}\r
                 */\r
-               X_UA[ 'MacIE' ]    = X_UA[ 'Mac' ];\r
+               if( X_UA[ 'Mac' ] ) X_UA[ 'MacIE' ] = true;\r
                /**\r
                 * @alias X.UA.IEMobile\r
                 * @type {boolean}\r
                 */\r
-               X_UA[ 'IEMobile' ] = dua.toLowerCase().indexOf( 'iemobile' ) !== -1 || X_UA[ 'WinCE' ];\r
+               if( dua.toLowerCase().indexOf( 'iemobile' ) !== -1 || X_UA[ 'WinCE' ] ) X_UA[ 'IEMobile' ] = true;\r
                /**\r
                 * @alias X.UA.WinPhone\r
                 * @type {boolean}\r
                 */\r
-               X_UA[ 'WinPhone' ] = dua.toLowerCase().indexOf( 'windows phone' ) !== -1 || 0 < dav.indexOf( 'ZuneWP' ); // ZuneWP は IEM のデスクトップモードで登場する\r
-               console.log( '>> IE : ' + v + ' ActiveX : ' + X_UA[ 'ActiveX' ] );\r
+               if( dua.toLowerCase().indexOf( 'windows phone' ) !== -1 || 0 < dav.indexOf( 'ZuneWP' ) ) X_UA[ 'WinPhone' ] = true; // ZuneWP は IEM のデスクトップモードで登場する\r
+               \r
+               console.log( '>> IE : ' + v + ' ActiveX : ' + X_UA[ 'ActiveX' ] + ' IEHost : ' + X_UA[ 'IECompat' ] );\r
                // TODO XBox360, XBox1, Modern or Desktop, Standalone\r
                return;\r
        };\r
@@ -524,10 +541,10 @@ var X_UA = X[ 'UA' ] = {};
                \r
                i = parseFloat(dua.split('WebKit\/')[1]);\r
                /**\r
-                * @alias X.UA.AndroidBrowserWebkit\r
+                * @alias X.UA.AndroidWebkit\r
                 * @type {number}\r
                 */\r
-               X_UA[ 'AndroidBrowserWebkit' ] = i;\r
+               X_UA[ 'AndroidWebkit' ] = i;\r
                alert( 'AudioSprite調査:Android標準ブラウザ Webkit Version ' + i );\r
                \r
        } else\r
@@ -600,6 +617,45 @@ var X_UA = X[ 'UA' ] = {};
                };\r
 })();\r
 \r
+(function(){\r
+       var k, v;\r
+       if( X_UA[ 'IE45' ] || X_UA[ 'IE4' ] ){\r
+               if( X_UA[ 'Mac' ] ){\r
+                       X_UA_classNameForHTML = 'Mac';\r
+               } else\r
+               if( X_UA[ 'WinCE' ] ){\r
+                       // TODO CE3 の ie4 と WM の ie4 の分岐\r
+                       X_UA_classNameForHTML = 'WinCE';\r
+               } else\r
+               if( X_UA[ 'Win' ] ){\r
+                       X_UA_classNameForHTML = 'Win';\r
+               } else {\r
+                       X_UA_classNameForHTML = 'Other';\r
+               };              \r
+               \r
+               X_UA_classNameForHTML += 'IE4';\r
+               \r
+               if( X_UA[ 'IE45' ] ){\r
+                       X_UA_classNameForHTML += '5';\r
+               };\r
+\r
+               if( X_UA[ 'ActiveX' ] ){\r
+                       X_UA_classNameForHTML += 'ActiveX';\r
+               };\r
+               \r
+       } else {\r
+               for( k in X_UA ){\r
+                       v = X_UA[ k ];\r
+                       if( v ){\r
+                               X_UA_classNameForHTML += k + ' ';\r
+                               if( v !== true ){\r
+                                       X_UA_classNameForHTML += k + v + ' ';\r
+                               };\r
+                       };\r
+               };              \r
+       };\r
+})();\r
+\r
 var X_UA_DOM   = {},\r
        X_UA_EVENT = {},\r
        X_UA_HID   = {};\r
@@ -663,7 +719,7 @@ if( X_UA[ 'IE' ] < 7 ){ // error @ NN7.2
                        X_UA[ 'ieExeComError' ] = eval( 'var a=1;try{document.execCommand&&document.execCommand("BackgroundImageCache",!1,!0)}catch(e){a=0}!a' );\r
                })();\r
        \r
-       X_UA[ 'ieExeComError' ] && alert( 'document.execCommand error!' );\r
+       //X_UA[ 'ieExeComError' ] && alert( 'document.execCommand error!' );\r
 };\r
 \r
 /*\r