C#执行Javascript代码的几种方法总结
来源:互联网 发布:js点击改变display 编辑:程序博客网 时间:2024/04/28 12:46
一、开源项目 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的功能比较有限,多条语句执行时,只返回最后一条语句的执行结果。
0 0
- C#执行Javascript代码的几种方法总结
- javascript--执行字符串代码和变量的几种方法
- C#执行查询的几种方法
- Android 实现延时执行操作的几种方法 总结以及代码
- 总结Javascript跳转的几种方法
- C#后台代码调用前台javascript的几种方法小结
- C#执行异步操作的几种方式总结比较
- 测试代码执行效率的几种方法比较
- 总结Javascript的几种页面刷新的方法!
- JQuery动态执行javascript代码的方法
- 总结有关Javascript链接的几种方法
- 几种javascript数组方法的简单总结
- javascript中创建对象的几种方法总结
- JavaScript中判断对象类型的几种方法总结
- 总结几种C#窗体间通讯的处理方法
- 总结几种C#窗体间通讯的处理方法
- C#遍历DataSet中数据的几种方法总结
- 总结C#启动外部程序的几种方法
- 五大常用算法之一:分治算法
- OGG的REP进程对主键列加1的处理
- UITextField的return按钮灰色
- java代理 InvocationHandler接口实现
- 在场景中添加多个图层
- C#执行Javascript代码的几种方法总结
- Nginx详细配置
- 五大常用算法之三:贪心算法
- 简易晶体管测试仪的设计
- bzoj3211.花神游历各国(线段树)
- 学习日志
- 五大常用算法之五:分支限界法
- JSP
- 并发事务问题