3

我正在使用 Jint,我想知道是否有办法从 C# 角度获取脚本全局范围内可用的所有已定义变量和函数。

例如,给定文件“test.js”中的以下 Javascript 代码:

function globalFunc(a, b) {
    var localVar = a + b;
    return localVar;
}

var globalVar = 5;

...并给出以下 C# 代码(使用 Jint 2.4.0):

Jint.Engine engine = new Jint.Engine();
engine.Execute(System.IO.File.ReadAllText("test.js");

// the following method call do not exist in Jint, just here for example...
JsValue[] variables = engine.GetGlobalScopeVariables();

然后期望变量包含两个值,即“Function”类型的名为“globalFunc”的变量和“Number”类型的名为“globalVar”的变量。

预期的答案可能会导致一些 Jint 黑客攻击。我也对此持开放态度。

谢谢!

4

1 回答 1

1

变量和函数可在 engine.Global.Properties 中访问。然而,它也包含“系统变量”。

By comparing the entries in the dictionary after you executed your script to the entries before you executed it you can get information about which variables and functions that was added.

于 2015-08-25T07:56:41.927 回答