Просмотр исходного кода

修改脚本运行方式,通过<script>运行

huqi 5 лет назад
Родитель
Сommit
fb48ebbdb9
1 измененных файлов с 74 добавлено и 50 удалено
  1. 74 50
      o2web/source/o2_core/o2/xScript/Macro.js

+ 74 - 50
o2web/source/o2_core/o2/xScript/Macro.js

@@ -1,61 +1,85 @@
 MWF.xScript = MWF.xScript || {};
 MWF.xScript.Macro = MWF.Macro = {
-	"swapSpace": {},
-	
-	expression: function(code, bind){},
-	runEvent: function(code, bind, arg){},
-	
-	exec: function(code, bind){
+    "swapSpace": {},
+    "scriptSpace": {},
+
+    expression: function(code, bind){},
+    runEvent: function(code, bind, arg){},
+
+    run: function(code, bind){
+
+    },
+    exec: function(code, bind){
+        debugger;
         var returnValue;
         //try{
-            if (!bind) bind = window;
-            if (o2.session.isDebugger){
-                try {
-                    var f = eval("(function(){return function(){\n"+code+"\n}})();");
-                    returnValue = f.apply(bind);
-                }catch(e){
-                    console.log(o2.LP.script.error);
-                    if (code.length>500){
-                        var t = code.substr(0,500)+"\n...\n";
-                        console.log(t);
-                    }else{
-                        console.log(code);
-                    }
-
-                    console.log(e);
-                    //throw e;
-                }
-            }else{
-                try {
-                    var f = eval("(function(){return function(){\n"+code+"\n}})();");
-                    returnValue = f.apply(bind);
-                }catch(e){
-                    console.log(o2.LP.script.error);
-                    if (code.length>500){
-                        var t = code.substr(0,500)+"\n...\n";
-                        console.log(t);
-                    }else{
-                        console.log(code);
-                    }
-
-                    console.log(e);
-                    //throw e;
-                }
-            }
+        if (!bind) bind = window;
 
-        //}catch(e){}//
+        var n = 0;
+        var o = "f"+"_"+n;
+        while (MWF.Macro.scriptSpace[o]){ n++; o = "f"+"_"+n; }
+        //MWF.Macro.scriptSpace[o] = bind;
 
+        if (o2.session.isDebugger){
+            var f = "MWF.Macro.scriptSpace[\""+o+"\"] = function(){\n"+code+"\n}";
+            Browser.exec(f);
+            returnValue = o2.Macro.scriptSpace[o].apply(bind);
+        }else{
+            var f = "MWF.Macro.scriptSpace[\""+o+"\"] = function(){try{\n"+code+"\n}catch(e){console.error(e)}}";
+            Browser.exec(f);
+            returnValue = o2.Macro.scriptSpace[o].apply(bind);
+        }
+        o2.Macro.scriptSpace[o] = null;
 
-	//	var macroCode = "MWF.Macro.swapSpace.tmpMacroFunction = function (){"+code+"};";
-	//	Browser.exec(macroCode);
-	//	var returnValue;
-	//	if (!bind) bind = window;
-  ////      try {
-  //          returnValue = MWF.Macro.swapSpace.tmpMacroFunction.apply(bind);
-  ////      }catch(e){};
-		return returnValue;
-	}
+        // if (o2.session.isDebugger){
+        //     this.run(code, bind)
+        // }else{
+        //     try {
+        //         var n = 0;
+        //         var o = "o"+"_"+n;
+        //         while (MWF.Macro.swapSpace[o]){
+        //             n++;
+        //             o = "o"+"_"+n;
+        //         }
+        //         MWF.Macro.swapSpace[o] = bind;
+        //         var f = "try {(function(){\n"+code+"\n}).apply(MWF.Macro.swapSpace[\""+o+"\"])} catch(e){console.log(e);}";
+        //         Browser.exec(f);
+        //         o2.Macro.swapSpace[o] = null;
+        //     }catch(e){
+        //         console.log(o2.LP.script.error);
+        //         if (code.length>500){
+        //             var t = code.substr(0,500)+"\n...\n";
+        //             console.log(t);
+        //         }else{
+        //             console.log(code);
+        //         }
+        //
+        //         console.log(e);
+        //         //throw e;
+        //     }
+        // }
+        return returnValue;
+    }
 };
+//try {
+
+
+// var f = eval("(function(){return function(){\n"+code+"\n}})();");
+// returnValue = f.apply(bind);
+// }catch(e){
+//     console.log(o2.LP.script.error);
+//     if (code.length>500){
+//         var t = code.substr(0,500)+"\n...\n";
+//         console.log(t);
+//     }else{
+//         console.log(code);
+//     }
+//
+//     console.log(e);
+//     debugger;
+//     throw e;
+// }
+MWF.Macro
 
 MWF.Macro.FormContext = new Class({
     macroFunction: null,