\r
if( ( dua.indexOf( 'Linux; U; Android ' ) !== -1 || dua.indexOf( 'Linux; Android ' ) !== -1 ) &&\r
( dua.indexOf( 'Chrome\/' ) === -1 || dua.indexOf( 'Version\/' ) !== -1 ) ){ // Chrome/ を含まない または Version/ を含む\r
- /**\r
- * Android 標準ブラウザ\r
- * @alias X.UA.AndroidBrowser\r
- * @type {number}\r
- */\r
- X_UA[ 'AndroidBrowser' ] = X_UA[ 'Android' ];\r
- \r
- v = X_UA[ 'AndroidMajor' ];\r
- \r
- /**\r
- * @alias X.UA.AndroidBrowser1\r
- * @type {boolean}\r
- */\r
- X_UA[ 'AndroidBrowser1' ] = v === 1;\r
- /**\r
- * @alias X.UA.AndroidBrowser2\r
- * @type {boolean}\r
- */\r
- X_UA[ 'AndroidBrowser2' ] = v === 2;\r
- /**\r
- * @alias X.UA.AndroidBrowser3\r
- * @type {boolean}\r
- */\r
- X_UA[ 'AndroidBrowser3' ] = v === 3;\r
- /**\r
- * @alias X.UA.AndroidBrowser4\r
- * @type {boolean}\r
- */\r
- X_UA[ 'AndroidBrowser4' ] = v === 4;\r
- /**\r
- * @alias X.UA.AndroidBrowser5\r
- * @type {boolean}\r
- */\r
- X_UA[ 'AndroidBrowser5' ] = v === 5;\r
\r
- console.log( '>> AndroidBrowser : ' + X_UA[ 'Android' ] );\r
+ /* if( window.chrome ){ // Android3.1 のAOSPブラウザで .chrome がいた、、、\r
+ //X_UA[ 'Blink' ] = X_UA[ 'ChromeWK' ] = tv;\r
+ } else */\r
+ if( dua.indexOf( 'Version\/' ) === -1 && ( v = parseFloat( dua.split( 'Chrome\/' )[ 1 ] ) ) ){\r
+ /**\r
+ * Android 標準ブラウザ Chrome Webkit ラップブラウザ\r
+ * @alias X.UA.ChromeWK\r
+ * @type {number}\r
+ */ \r
+ X_UA[ 'ChromeWK' ] = v;\r
+ } else\r
+ // http://uupaa.hatenablog.com/entry/2014/04/15/163346\r
+ // Chrome WebView は Android 4.4 の時点では WebGL や WebAudio など一部の機能が利用できません(can i use)。\r
+ // また UserAgent が書き換え可能なため、旧来のAOSPブラウザの UserAgent を偽装した形で配布されているケースがあります。\r
+ // http://caniuse.com/#compare=chrome+40,android+4.2-4.3,android+4.4,android+4.4.3-4.4.4,and_chr+45\r
+ // CustomElement の有無で判定\r
+ if( document[ 'registerElement' ] ){\r
+ // UA が偽装された ChromeWK\r
+ X_UA[ 'ChromeWK' ] = tv;\r
+ alert( 'UA が偽装された Chrome Webkit' );\r
+ } else {\r
+ /**\r
+ * Android 標準ブラウザ AOSP\r
+ * @alias X.UA.AOSP\r
+ * @type {number}\r
+ */\r
+ X_UA[ 'AOSP' ] = X_UA[ 'Android' ]; \r
+ };\r
\r
- i = parseFloat(dua.split('WebKit\/')[1]);\r
+ i = parseFloat( dua.split( 'WebKit\/' )[ 1 ] );\r
/**\r
* @alias X.UA.AndroidWebkit\r
* @type {number}\r
X_UA[ 'AndroidWebkit' ] = i;\r
//alert( 'AudioSprite調査:Android標準ブラウザ Webkit Version ' + i );\r
\r
- if( window.chrome ){\r
- //X_UA[ 'Blink' ] = X_UA[ 'AndroidChromeBrowser' ] = tv;\r
- } else\r
- if( v = parseFloat(dua.split('Chrome\/')[1]) ){\r
- X_UA[ 'Chrome' ] = X_UA[ 'AndroidChromeBrowser' ] = v;\r
- };\r
- \r
- //if( window[ 'webkitRequestFileSystem' ] ) alert( 'requestFileSystem' );\r
- \r
- //alert( 'html.style.WebkitAppearance:' + ( document.documentElement.style[ 'WebkitAppearance' ] === undefined ) + ' win.chrome:' + !!( window.chrome ) );\r
-\r
+ /*\r
+ * http://www.flexfirm.jp/blog/article/402\r
+ * Sブラウザ\r
+ * SC-04E、SC-01F、SC-02F、 SC-04F、SCL22、SCL23など\r
+ */\r
} else\r
\r
// TODO Blink\r
- if( window.chrome ){ // Android3.1 の標準ブラウザで .chrome がいた、、、\r
+ if( window.chrome ){\r
/**\r
* @alias X.UA.Blink\r
* @type {number}\r
*/\r
- X_UA[ 'Blink' ] = tv;\r
+ X_UA[ 'Blink' ] = parseFloat( dua.split( 'Chrome/' )[ 1 ] );\r
+ \r
+ if( v = parseFloat( dua.split( 'OPR/' )[ 1 ] ) ){\r
+ /**\r
+ * @alias X.UA.BlinkOpera\r
+ * @type {number}\r
+ */\r
+ X_UA[ 'BlinkOpera' ] = v;\r
+ };\r
console.log( '>>Blink : ' + X_UA[ 'Blink' ] );\r
\r
} else\r