手机
当前位置:查字典教程网 >编程开发 >C#教程 >C#执行Javascript代码的几种方法总结
C#执行Javascript代码的几种方法总结
摘要:一、开源项目Javascript.NET地址:http://javascriptdotnet.codeplex.com/它是GoogleCh...

一、开源项目 Javascript .NET

地址: http://javascriptdotnet.codeplex.com/ 它是Google Chrome V8引擎在.NET上的封装,功能完善,性能相对较高,推荐使用! (缺点就是asp.net web应用上,好象会报错)

示例代码:

复制代码 代码如下:

using Noesis.Javascript;

using System;

using System.Collections.Generic;

namespace JsCSharp

{

class Program

{

static void Main(string[] args)

{

using (JavascriptContext ctx = new JavascriptContext())

{

var i = ctx.Run("1+2");

Console.WriteLine(i);//3

ctx.Run("var d = new Date(2013,9-1,2,20,30,15)");

var d = ctx.GetParameter("d");

Console.WriteLine(d);//2013/9/2 20:30:15

var j = ctx.Run("function add(x,y){return x+y;};add(5,10);");

Console.WriteLine(j);//15

ctx.Run("var obj = {};obj.name='jimmy';obj.sex='Male';obj.name='杨俊明'");

var obj = ctx.GetParameter("obj") as Dictionary<string, object>;

foreach (var key in obj.Keys)

{

Console.WriteLine(string.Format("{0}:{1}", key, obj[key]));

//name:杨俊明

//sex:Male

}

var jsonArr = ctx.Run("[{Airport:'PEK',Name:'北京首都机场'},{Airport:'XIY',Name:'西安咸阳机场'}]") as Array;

foreach (var item in jsonArr)

{

var json = item as Dictionary<string, object>;

foreach (var key in json.Keys)

{

Console.WriteLine(string.Format("{0}:{1}", key, json[key]));

//Airport:PEK

//Name:北京首都机场

//Airport:XIY

//Name:西安咸阳机场

}

}

ctx.SetParameter("x", 7);

ctx.Run("function add(x,y){return x+y;}; function sub(x,y){return x-y;};k = add(2,x);var t = sub(9,1);");

var k = ctx.GetParameter("k");

Console.WriteLine(k);//9

var t = ctx.GetParameter("t");

Console.WriteLine(t);//8

Console.Read();

}

}

}

}

部署时要注意,msvcp100.dll、msvcr100.dll这二个文件,要复制到bin目录下

二、利用Microsoft.JScript.Vsa

先添加Microsoft.JScript、Microsoft.Vsa二个程序集的引用,然后就能用了,示例代码如下:

复制代码 代码如下:

using Microsoft.JScript;

using Microsoft.JScript.Vsa;

using System;

namespace JsCSharp

{

class Program

{

static VsaEngine Engine = VsaEngine.CreateEngine();

static void Main(string[] args)

{

var i = (int)EvalJScript("1+2;");

Console.WriteLine(i);//3

var d = (DateObject)EvalJScript("var d = new Date(2013,9-1,2,20,30,15)");

Console.WriteLine(d);//Mon Sep 2 20:30:15 UTC+8 2013

var j = EvalJScript("function add(x,y){return x+y;};add(5,10);");

Console.WriteLine(j);//15

var obj = EvalJScript("var obj = {};obj.name='jimmy';obj.sex='Male';");

Console.WriteLine(obj);//Male 注:只返回最后一条执行的语句结果

Console.Read();

}

static object EvalJScript(string JScript)

{

object Result = null;

try

{

Result = Microsoft.JScript.Eval.JScriptEvaluate(JScript, Engine);

}

catch (Exception ex)

{

return ex.Message;

}

return Result;

}

}

}

Vsa的功能比较有限,多条语句执行时,只返回最后一条语句的执行结果。

【C#执行Javascript代码的几种方法总结】相关文章:

C#中时间的几种格式转换方法

C#下解析HTML的两种方法介绍

C#调用Java类的实现方法

c#中分割字符串的几种方法

C#中Web.Config加密与解密的方法

解析C#中@符号的几种使用方法详解

C#对XML文件的各种操作实现方法

在C#中调用VBScript、javascript等脚本的实现代码

C#读写文件的方法汇总

遍历Hashtable 的几种方法

精品推荐
分类导航