那麼,我有很多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代碼爲字符串 –
這是一個非常不尋常的環境。我強烈建議你通過編輯你的問題來描述它。 –