*/\r
X_UA[ 'Android' ] = X_UA[ 'AndroidMajor' ] + X_UA[ 'AndroidMinor' ] / 10;\r
console.log( '>> Android : ' + X_UA[ 'Android' ] );\r
+ } else\r
+ if( dua.indexOf( 'Android;' ) !== -1 ){\r
+ // Fennec 用\r
+ X_UA[ 'Android' ] = 2;\r
};\r
};\r
\r
X_UA[ 'Trident' ] = parseFloat(dav.split('Trident/')[1]) || 0;\r
\r
tridentToVer = X_UA[ 'Trident' ] ? ( X_UA[ 'Trident' ] + 4 | 0 ) : X_UA[ '_IE' ];\r
- /**\r
- * IE10 以上の互換モードを使用している場合、そのバージョン\r
- * @alias X.UA.IEHost\r
- * @type {number}\r
- */\r
- if( tridentToVer !== X_UA[ '_IE' ] ) X_UA[ 'IEHost' ] = tridentToVer;\r
+\r
+ if( tridentToVer !== X_UA[ '_IE' ] ){\r
+ /**\r
+ * IE10 以上の互換モードを使用している場合、そのバージョン\r
+ * @alias X.UA.IEHost\r
+ * @type {number}\r
+ */ \r
+ X_UA[ 'IEHost' ] = tridentToVer;\r
+ };\r
/**\r
* documentモードを考慮したIEのバージョン\r
* @alias X.UA.IE\r
};\r
\r
console.log( '>> Gecko : ' + X_UA[ 'Gecko' ] );\r
- };\r
+ } else\r
\r
// Android 標準ブラウザ AOSP と ChromeWeb View, Sブラウザがある\r
if( ( v = X_UA[ 'Android' ] ) &&\r
\r
console.log( 'HTML5? ' + X_UA_ATagWrapDiv ); */\r
\r
-var X_Script_VBS_ENABLED = X_UA[ 'Windows' ] && !X_UA[ 'WinCE' ] && !X_UA[ 'WinPhone' ] && X_UA[ 'IE' ] < 11;\r
+var X_Script_VBS_ENABLED = X_UA[ 'Windows' ] && !X_UA[ 'WinCE' ] && !X_UA[ 'WinPhone' ] && X_UA[ 'IE' ] < 11,\r
+ // 構文のサポート instanceof, in(for-in ではない), try-catch. JS version 1.5以上\r
+ X_Script_gte15 = !( X_UA[ 'IE' ] < 5.5 ) && ( new Function( 'f,a', 'try{return f.apply({},a)}catch(e){}' ) );\r
\r
/**\r
* js バージョン間の際を吸収\r
'tryCatch' : X_Script_try\r
};\r
\r
-if( X_UA[ 'IE' ] < 9 && X_Script_VBS_ENABLED ){\r
- (function( lines ){\r
- var s = document.createElement( 'script' );\r
- X_elmHead.appendChild( s );\r
- s.type = 'text/vbscript';\r
- s.text = lines.join( '\n' );\r
- \r
- })( [\r
- 'Function vba_testAXO(v)',\r
- 'On Error Resume Next',\r
- 'Set ax = CreateObject(v)',\r
- 'If Err.Number Then',\r
- 'ax = 1',\r
- 'End If',\r
- 'Err.Clear',\r
- 'vba_testAXO = ax',\r
- 'End Function' /*,\r
- \r
- 'Function vba_try(jsFunc,a1,a2,a3,a4)',\r
- 'On Error Resume Next',\r
- 'Set rs = jsFunc(a1,a2,a3,a4)',\r
- 'If Err.Number != 0 Then',\r
- 'rs = 0',\r
- 'End If',\r
- 'Err.Clear',\r
- 'vba_try = rs',\r
- 'End Function' */\r
- ] );\r
- \r
+if( X_Script_VBS_ENABLED ){\r
+ X_Script_gte15 || document.write( '<script type=text/vbscript>' +\r
+ [\r
+ 'Function vbs_testAXO(v)',\r
+ 'On Error Resume Next',\r
+ 'Set ax = CreateObject(v)',\r
+ 'If Err.Number Then',\r
+ 'ax = 1',\r
+ 'End If',\r
+ 'Err.Clear',\r
+ 'vbs_testAXO = ax',\r
+ 'End Function' /*,\r
+ \r
+ 'Function vbs_try(jsFunc,a1,a2,a3,a4)',\r
+ 'On Error Resume Next',\r
+ 'Set rs = jsFunc(a1,a2,a3,a4)',\r
+ 'If Err.Number != 0 Then',\r
+ 'rs = 0',\r
+ 'End If',\r
+ 'Err.Clear',\r
+ 'vbs_try = rs',\r
+ 'End Function'\r
+ \r
+ // elementID .SRC = v\r
+ 'Function vbs_setValue(id,k,v)',\r
+ 'On Error Resume Next',\r
+ 'Set rs = 1',\r
+ 'Document.all[id][k]=v',\r
+ 'If Err.Number != 0 Then',\r
+ 'rs = 0',\r
+ 'End If',\r
+ 'Err.Clear',\r
+ 'vbs_try = rs',\r
+ 'End Function'\r
+\r
+ * \r
+ * \r
+ * */\r
+ ].join( '\n' ) + '</script>' );\r
+\r
// TODO Object のメンバを辿る vba\r
+ // byte Array を扱う vba\r
};\r
\r
function X_Script_try( func, args ){\r
- if( X_UA[ 'IE' ] < 5.5 ){\r
+ if( !X_Script_gte15 ){\r
//return func.apply( {}, args );\r
return;\r
};\r
- return ( new Function( 'f,a', 'try{return f.apply({},a)}catch(e){}' ) )( func, args || [] );\r
+ return X_Script_gte15( func, args || [] );\r
};\r
\r
function X_Script_createActiveXObjectSafty( name ){\r
- if( X_UA[ 'IE' ] < 9 ){\r
+ if( !X_Script_gte15 ){\r
if( X_Script_VBS_ENABLED ){\r
- console.log( window[ 'vba_testAXO' ]( name ) + ' ' + name );\r
- return !window[ 'vba_testAXO' ]( name ) && X_Script_createActiveXObject( name );\r
+ // console.log( window[ 'vbs_testAXO' ]( name ) + ' ' + name );\r
+ return !window[ 'vbs_testAXO' ]( name ) && X_Script_createActiveXObject( name );\r
};\r
return X_Script_createActiveXObject( name );\r
};\r
return new ActiveXObject( name );\r
};\r
\r
-// TODO 構文のサポート instanceof, in, try catch\r
-\r
-if( X_UA[ 'IE' ] < 7 ){ // error @ NN7.2\r
- X_UA[ 'IE4' ] || X_UA[ 'IE5' ] || X_UA[ 'MacIE' ] ?\r
- document.execCommand && document.execCommand( 'BackgroundImageCache', false, true ) :\r
- (\r
- X_Script_try( function(){ document.execCommand( 'BackgroundImageCache', false, true ); return 1; } ) &&\r
- /**\r
- * ie7 以下で実行する document.execCommand( 'BackgroundImageCache', false, true ) の失敗。\r
- * bonus: hotfix for IE6 SP1 (bug KB823727)\r
- * multipleIEs IE6 standalone 版では不可, IE5.5 は可,,,\r
- * @alias X.UA.ieExeComError */ \r
- ( X_UA[ 'ieExeComError' ] = true )\r
- );\r
+/*\r
+ * http://archiva.jp/web/html-css/ie6_background_flickr.html\r
+ * hover時の背景画像ちらつきに対処する\r
+ * この問題はIE6固有の問題であり、他のモダンブラウザやIE5等では発現しない。\r
+ */\r
+if( X_UA[ 'IE6' ] && // error @ NN7.2\r
+ !X_Script_try( function(){ document.execCommand( 'BackgroundImageCache', false, true ); return 1; } ) ){\r
+ /**\r
+ * ie6 のみで実行する document.execCommand( 'BackgroundImageCache', false, true ) の失敗。\r
+ * bonus: hotfix for IE6 SP1 (bug KB823727)\r
+ * multipleIEs IE6 standalone 版では不可, IE5.5 は可,,,\r
+ * @alias X.UA.ieExeComError */\r
+ X_UA[ 'ieExeComError' ] = true;\r
};\r
+\r