1

我正在使用 JINT 将 javascript 文件加载到一个小型 C# 应用程序中,并使用 C# 中的一些参数调用许多方法。我想获取这些方法的返回值。这就是我正在做的事情:

        JintEngine engine = new JintEngine();
        string file = File.ReadAllText(@"C:\thejavascript.js");
        engine.Run(file);            
        Console.WriteLine(engine.CallFunction("themethod")); 

javascript方法如下:

        function themethod() {   
            console.log("Hello!");
                return "Finished";
        }

当我运行上面的代码时,我可以在 VisualStudio 控制台中看到“完成”,但是调用发送“你好!” 到 AS3 控制台无处可寻。它甚至不在 flashlog.txt 文件中。事实上,我认为 JINT 会引发错误,因为它可能不是存在的“控制台”对象,因为没有浏览器。

如何捕获从在 JINT 中运行的 javascript 发送到控制台的内容?JINT 下载站点上有一个示例,其中包含 SystemConsole' 或其他内容(不是 System.Console),但我没有成功地让它工作。我希望能够将调试代码添加到 javascript 并在 VisualStudio 的控制台中看到它。

有任何想法吗?这使得调试我正在做的事情变得非常困难。. .

提前致谢。

4

1 回答 1

2

在 C# 中:

        JintEngine engine = new JintEngine();
        engine.SetFunction("__log", new Action<object>(Console.WriteLine));
        var billy = engine.CallFunction("testMethod"); 

在 Javascript 中:

var customConsole= {};

customConsole.__log = function(args){ var toCall = '';
for(var i = 0, l = arguments.length; i <l; i++){ toCall += arguments[i] + ' '; }
__log(toCall);};

function testMethod() {         
    customConsole.__log("Log this. . .");
}
于 2012-11-26T21:54:41.733 回答