X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=0.6.x%2Fjs%2F01_core%2F02_XUA.js;h=acf31f409a872d86563a5e018fcbc1c3a7ccad49;hb=66ccef8a1fdd3994dd3c75dcfede668ea55f1d2e;hp=73e7105420dfd00fd5e4a9595373c2465473f157;hpb=2bea17ee282c2cf4ce0de6685db3ade602f6e60f;p=pettanr%2FclientJs.git diff --git a/0.6.x/js/01_core/02_XUA.js b/0.6.x/js/01_core/02_XUA.js index 73e7105..acf31f4 100644 --- a/0.6.x/js/01_core/02_XUA.js +++ b/0.6.x/js/01_core/02_XUA.js @@ -10,14 +10,14 @@ * @type {object} */ var X_UA = X[ 'UA' ] = {}, - X_UA_classNameForHTML = 'js-enabled '; + X_UA_classNameForHTML = ''; (function(){ var dua = navigator.userAgent, dav = navigator.appVersion, tv = parseFloat(dav), sys = navigator.platform, - tridentToVer, i, j, v; + tridentToVer, i, j, v, androidBrowserPCMode; console.log( ' userAgent : ' + dua ); console.log( '-' ); @@ -233,9 +233,8 @@ var X_UA = X[ 'UA' ] = {}, * @alias X.UA.Linux * @type {boolean} */ - X_UA[ 'Linux' ] = true; - - if( v = dua.split( 'Android ' )[ 1 ] ){ + if( ( v = dua.split( 'Android ' )[ 1 ] ) || + ( v = sys.split( 'Android ' )[ 1 ] ) ){ // PCモードの Android Firefox では platform に Android 0.0.0 が存在 v = v.split( '.' ); /** * @alias X.UA.AndroidMajor @@ -265,6 +264,36 @@ var X_UA = X[ 'UA' ] = {}, */ X_UA[ 'Android' ] = X_UA[ 'AndroidMajor' ] + X_UA[ 'AndroidMinor' ] / 10; console.log( '>> Android : ' + X_UA[ 'Android' ] ); + } else + if( ( sys === 'Linux armv7l' || sys === 'Linux i686' ) && window.ontouchstart !== undefined && ( v = parseFloat( dua.split( 'WebKit\/' )[ 1 ] ) ) ){ + // https://ja.wikipedia.org/wiki/WebKit + // http://www.au.kddi.com/developer/android/kishu/ua/ + // webkit version to Android version... + androidBrowserPCMode = !window.chrome || v < 534.3; // 4.0 & 3.x には chrome がいる... + + if( !window[ 'Int8Array' ] ){ + v = + v < 529 ? 1.5 : // <= 528.5 + v < 531 ? 2.0 : // 530 2.0~2.1 + // 533 2.2~2.3 + v < 534 ? ( window.HTMLAudioElement ? 2.3 : 2.2 ) : 0; + } else { + v = + !navigator[ 'connection' ] ? 4.4 : + Number.isFinite && ( window.history && window.history.pushState ) ? 4.2/* & 4.3 */ : // ここに 4.1, 4.0 も入ってくる... + Number.isFinite ? 4.1 : 4; + // 534 - 3.x~4.x , 534.13=3.x + // 534.30 = 4.0-4.1 + // 535.19 = 4.1 + // 537.36 = 4.4.2-5.x + }; + + if( v ){ + // PC版で見る、にチェックが付いている場合、ユーザーエージェント文字列にも platform にも Android の文字列が存在しない(標準ブラウザ&Chrome) + // Audio でタッチが必要か?の判定にとても困る... + // ua には Linux x86_64 になっている + X_UA[ 'Android' ] = v; + }; }; }; @@ -350,7 +379,7 @@ var X_UA = X[ 'UA' ] = {}, * @alias X.UA.EdgeMobile * @type {number} */ - X_UA[ 'EdgeMobile' ] = v; + X_UA[ 'EdgeMobile' ] = v; }; } else @@ -620,11 +649,11 @@ var X_UA = X[ 'UA' ] = {}, } else // Android 標準ブラウザ AOSP と ChromeWeb View, Sブラウザがある - if( ( v = X_UA[ 'Android' ] ) && ( dua.indexOf( 'Chrome\/' ) < 0 || 0 < dua.indexOf( 'Version\/' ) ) ){ // Chrome/ を含まない または Version/ を含む + if( ( v = X_UA[ 'Android' ] ) && ( dua.indexOf( 'Chrome\/' ) < 0 || 0 < dua.indexOf( 'Version\/' ) || androidBrowserPCMode ) ){ // Chrome/ を含まない または Version/ を含む /* if( window.chrome ){ // Android3.1 のAOSPブラウザで .chrome がいた、、、 } else */ - if( dua.indexOf( 'Version\/' ) < 0 && 0 < dua.indexOf( 'Chrome\/' ) ){ + if( dua.indexOf( 'Version\/' ) < 0 && 0 < dua.indexOf( 'Chrome\/' ) && !androidBrowserPCMode ){ /** * Android 標準ブラウザ Chrome WebView ブラウザ * @alias X.UA.ChromeWV @@ -778,9 +807,10 @@ var X_UA = X[ 'UA' ] = {}, for( k in X_UA ){ v = X_UA[ k ]; if( v ){ - X_UA_classNameForHTML += k + ' '; if( v !== true ){ X_UA_classNameForHTML += k + v + ' '; + } else { + X_UA_classNameForHTML += k + ' '; }; }; };