1 var X_Script_VBS_ENABLED = X_UA[ 'Windows' ] && !X_UA[ 'WinCE' ] && !X_UA[ 'WinPhone' ] && X_UA[ 'IE' ] < 11,
\r
2 // 構文のサポート instanceof, in(for-in ではない), try-catch. JS version 1.5以上
\r
3 X_Script_gte15 = !( X_UA[ 'IE' ] < 5.5 ) && ( new Function( 'f,a', 'try{return f.apply({},a)}catch(e){}' ) );
\r
6 * js バージョン間の差異を可能な限り吸収する
\r
7 * @namespace X.Script
\r
12 'tryCatch' : X_Script_try
\r
14 // git, strict mode, asm.js,
\r
17 if( X_Script_VBS_ENABLED ){
\r
20 * Visual Basic Script が使えるか?
\r
21 * @alias X.Script.VBS
\r
24 X[ 'Script' ][ 'VBS' ] = true;
\r
26 X_Script_gte15 || document.write( '<script type=text/vbscript>' +
\r
28 'Function vbs_testAXO(v)',
\r
29 'On Error Resume Next',
\r
30 'Set ax = CreateObject(v)',
\r
31 'If Err.Number Then',
\r
38 'Function vbs_try(jsFunc,a1,a2,a3,a4)',
\r
39 'On Error Resume Next',
\r
40 'Set rs = jsFunc(a1,a2,a3,a4)',
\r
41 'If Err.Number != 0 Then',
\r
48 // elementID .SRC = v
\r
49 'Function vbs_setValue(id,k,v)',
\r
50 'On Error Resume Next',
\r
52 'Document.all[id][k]=v',
\r
53 'If Err.Number != 0 Then',
\r
63 ].join( '\n' ) + '</script>' );
\r
65 // TODO Object のメンバを辿る vba
\r
66 // byte Array を扱う vba
\r
69 function X_Script_try( func, args ){
\r
70 if( !X_Script_gte15 ){
\r
71 //return func.apply( {}, args );
\r
74 return X_Script_gte15( func, args || [] );
\r
77 function X_Script_createActiveXObjectSafty( name ){
\r
78 if( !X_Script_gte15 ){
\r
79 if( X_Script_VBS_ENABLED ){
\r
80 // console.log( window[ 'vbs_testAXO' ]( name ) + ' ' + name );
\r
81 return !window[ 'vbs_testAXO' ]( name ) && X_Script_createActiveXObject( name );
\r
83 return X_Script_createActiveXObject( name );
\r
86 return X_Script_try( X_Script_createActiveXObject, [ name ] );
\r
89 // TODO GeckoActiveX
\r
90 function X_Script_createActiveXObject( name ){
\r
91 return new ActiveXObject( name );
\r
95 * http://archiva.jp/web/html-css/ie6_background_flickr.html
\r
96 * hover時の背景画像ちらつきに対処する
\r
97 * この問題はIE6固有の問題であり、他のモダンブラウザやIE5等では発現しない。
\r
99 if( X_UA[ 'IE6' ] && // error @ NN7.2
\r
100 !X_Script_try( function(){ document.execCommand( 'BackgroundImageCache', false, true ); return 1; } ) ){
\r
102 * ie6 のみで実行する document.execCommand( 'BackgroundImageCache', false, true ) の失敗。
\r
103 * bonus: hotfix for IE6 SP1 (bug KB823727)
\r
104 * multipleIEs IE6 standalone 版では不可, IE5.5 は可,,,
\r
105 * @alias X.UA.ieExeComError */
\r
106 X_UA[ 'ieExeComError' ] = true;
\r