那么,我有很多javascript的变量,我需要获取值(我从其他页面获得)。 这样做的最好方法是什么? 我使用Microsoft.Jscript
类和您的方法工作。如何使用C#运行jscript并返回数组中的值?
我写了下面的代码:
static Dictionary<string, string> ParseVariables(string code)
{
string[] variables = code.Split(';');
Dictionary<string, string> variablesValues = new Dictionary<string, string>();
for (int i = 0, len = variables.Length - 1; i < len; i++)
{
string vvar = variables[i];
string varName = Regex.Replace(vvar.Split('=')[0], @"^\s*var\s*", string.Empty).Trim();
var compiler = Compile(vvar);
string varValue = compiler.ToString();
variablesValues.Add(varName, varValue);
}
return variablesValues;
}
static object Compile(string JSource)
{
return Microsoft.JScript.Eval.JScriptEvaluate(JSource, Microsoft.JScript.Vsa.VsaEngine.CreateEngine());
}
能正常工作的一些情况,如:
var jscript = "var x = 'foo'; var y = 'baa';";
var output = ParseVariables(jscript);
var val = output["y"]; //baa
var val2 = output["x"]; //foo
但情况是这样的:
var jscript = "var x = {}; x['foo'] = 'baa'; x['baa'] = 'test';";
var output = ParseVariables(jscript);
var val = output["x['foo']"]; //not works
我如何做到这一点?任何帮助表示赞赏!谢谢!
这是非常不清楚你在问什么。这是一个ASP.NET页面吗?您正在谈论的JavaScript是否在浏览器中运行? –
@Jonh:这是一个控制台应用程序。 我从其他页面获取的javascript代码为字符串 –
这是一个非常不寻常的环境。我强烈建议你通过编辑你的问题来描述它。 –