【发布时间】:2016-09-15 21:49:49
【问题描述】:
我想确保 javascript 代码是有效的语法:
string test = " var i = 0; ";
Jint.Engine ScrptingEngine = new Jint.Engine();
bool result = ScrptingEngine.Parse(test);
【问题讨论】:
我想确保 javascript 代码是有效的语法:
string test = " var i = 0; ";
Jint.Engine ScrptingEngine = new Jint.Engine();
bool result = ScrptingEngine.Parse(test);
【问题讨论】:
您可以使用Execute() 方法“解析”您的JavaScript,并使用GetValue() 方法检索该值,然后断言它按预期工作。
string test = " var i = 0; ";
Jint.Engine ScrptingEngine = new Jint.Engine();
var result = ScrptingEngine.Execute(test).GetValue("i");
Assert.AreEqual(0, result);
另外,如果 JavaScript 无效,Execute 方法也会抛出一个JavaScriptException:
try
{
ScrptingEngine.Execute("xx = ss == esfx = fuct()");
}
catch(JavaScriptException ex) {}
【讨论】:
如果将脚本添加到对象,则它不应运行任何代码。
var myscript = @"
var badFunction = function(){/* please don't run this*/ }
badFunction ();"
new Engine().Execute("var noRun = {" + myscript + "}");
虽然脚本本身不会破坏对象封装,但不能保证。
【讨论】:
调用 JavaScriptParser 怎么样?
Esprima.JavaScriptParser parser = new Esprima.JavaScriptParser(script);
parser.ParseScript();
当您将 Jint 添加到您的项目时,您还会获得 Esprima 命名空间,这就是 Jint 在内部使用的名称(如果我正确阅读了源代码的话)。
然后你可以赶上Esprima.ParserException。
【讨论】: