OSDN Git Service

Fix the bug of X.NodeAnime.
[pettanr/clientJs.git] / 0.6.x / js / 01_core / 03_XScript.js
index b8255ca..f32a744 100644 (file)
@@ -9,20 +9,20 @@ var X_Script_VBS_ENABLED = X_UA[ 'Windows' ] && !X_UA[ 'WinCE' ] && !X_UA[ 'WinP
  * @type {object}\r
  */\r
 X[ 'Script' ] = {\r
-       'tryCatch' : X_Script_try\r
+\r
+       'tryIfSafe' : X_Script_try,\r
        \r
+       /**\r
+        * Visual Basic Script が使えるか?\r
+        * @alias X.Script.VBS\r
+        * @type {boolean}\r
+        */\r
+       'VBS'       : X_Script_VBS_ENABLED\r
        // git, strict mode, asm.js, \r
 };\r
 \r
 if( X_Script_VBS_ENABLED ){\r
        \r
-/**\r
- * Visual Basic Script が使えるか?\r
- * @alias X.Script.VBS\r
- * @type {boolean}\r
- */\r
-       X[ 'Script' ][ 'VBS' ] = true;\r
-       \r
        X_Script_gte15 || document.write( '<script type=text/vbscript>' +\r
                [\r
                        'Function vbs_testAXO(v)',\r
@@ -62,13 +62,39 @@ if( X_Script_VBS_ENABLED ){
                        * */\r
                ].join( '\n' ) + '</script>' );\r
 \r
+       // http://space.geocities.jp/nequomame/others/excelvba/excelvba_01_03.html\r
+       // Document.ActiveElement に安全に触れるか?確認\r
+       // そういえば error は iframe 内で起きていた\r
+       // http://stackoverflow.com/questions/14378224/document-activeelement-in-iframe-shows-unspecified-error-in-ie-standards-mode\r
+       // document.activeElement in iframe shows unspecified error in IE standards mode\r
+       X_Script_gte15 || document.write( '<script type=text/vbscript>' +\r
+               [\r
+                       'Function vbs_testAE()',\r
+                               'On Error Resume Next',\r
+                               'Set ae = Document.ActiveElement',\r
+                               'If Err.Number Then',\r
+                                       'ae = 1',\r
+                               'End If',\r
+                               'Err.Clear',\r
+                               'vbs_testAE = ae',\r
+                       'End Function'\r
+               ].join( '\n' ) + '</script>' );\r
+\r
        // TODO Object のメンバを辿る vba\r
        // byte Array を扱う vba\r
 };\r
 \r
+/**\r
+ * try-catch 構文が使えて安全に実行できるなら、コードを実行する\r
+ * @alias X.Script.tryIfSafe\r
+ * @param {funciton} func\r
+ * @param {array=} 引数の入った配列\r
+ */\r
 function X_Script_try( func, args ){\r
        if( !X_Script_gte15 ){\r
                //return func.apply( {}, args );\r
+               // window.onerror = return true を設定\r
+               // vbs 側から呼び出し?\r
                return;\r
        };\r
        return X_Script_gte15( func, args || [] );\r