当前位置:  编程技术>.net/c#/asp.net

C#执行Javascript代码的几种方法总结

    来源: 互联网  发布时间:2014-10-28

    本文导语:  一、开源项目 Javascript .NET 地址: http://javascriptdotnet.codeplex.com/ 它是Google Chrome V8引擎在.NET上的封装,功能完善,性能相对较高,推荐使用! (缺点就是asp.net web应用上,好象会报错) 示例代码: 代码如下:using Noesis.Javascript; using Sy...

一、开源项目 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;
                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;
                    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#中WebBrowser的DocumentCompleted事件不执行的实现方法
  • C# 执行bat批处理文件的小例子
  • C#实现将记事本中的代码编译成可执行文件的方法
  • 使用 C# 动态编译代码和执行的代码
  • C#实现终止正在执行的线程
  • C#中执行批处理文件(*.bat)的方法代码
  • PowerShell 定时执行.Net(C#)程序的方法
  • C#中验证sql语句是否正确(不执行语句)
  • C#代码验证sql语句是否正确(只验证不执行sql)的方法
  • C#中如何执行存储过程方法
  • c#执行外部命令示例分享
  • c#动态编译执行对象方法示例 运用映射机制创建对象
  • javascript函数中执行c#函数的方法
  • C#计算代码执行时间的方法
  • linux操作系统安装MONO执行C#程序的详解步骤
  • c#中executereader执行查询示例分享
  • 解析C#中用Process类杀死进程,执行命令的深入分析
  • 带着问题读CLR via C#(笔记一)CLR的执行模型
  • c#实现用SQL池,多线程定时批量执行SQL语句的方法
  • Asp.Net(C#)自动执行计划任务的程序实例分析分享
  • 请问如何在jsp中执行一段javascript
  • 请教:javascript 里有没有时间循环执行的函数,如我按住鼠标触发mousedown 事件函数时,反复执行我写的一个函数?
  • 怎样才能从javascript调用一个可执行程序?
  • 请问:怎么用java执行web页中的javascript脚本?
  • 为何我使用javascript中location'****.jsp'跳到某一页面,jsp页面不重新编译执行
  • python使用PyV8执行javascript代码示例分享
  • 利用noesis.Javascript开源组件.Net中执行javascript脚本
  • 使用Rhino让java执行javascript的方法实例
  • JavaScript异步执行辅助工具 ocSteps
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Microsoft IE MSHTML内存破坏远程代码执行漏洞
  • 为什么执行完execlp函数后程序就退出了,怎样才能让程序继续执行后面的代码
  • 我刚看java,知道它的目标代码是解释执行的,目标执行速度快吗?
  • 怎样看到java程序经过编译后的代码内容(bytecode的)或者在bytecode在JVM执行时JVM所解析的代码
  • 深入探讨:main函数执行完毕后,是否可能会再执行一段代码?
  • 执行PHP代码的虚拟机 HHVM
  • jQuery页面加载完毕再执行代码多种方法
  • 在linux下怎么执行c源代码(急急急)
  • 50分求一定时执行的程序代码
  • C++ 代码执行工具 hbcxx
  • 我怎么在Ctrl+c前执行一段自己的代码
  • 跳到指定地址执行代码
  • centos服务器定时执行一段php代码
  • 关于java执行代码一问
  • 请问在 Linux 下如何用代码实现连接oracle数据库 并 执行 SQL 语句?
  • 如何把二进制代码编译成可执行文件
  • 各位大侠,帮我看看为什么代码执行错误!!!
  • java里有什么函数可以检查 java 代码并执行它?
  • 不改变代码,怎样使每次编译生成的可执行程序或动态库二进制保持一致?
  • 计算php脚本执行时间的示例代码
  • 在java应用程序中,可不可以等待某个线程执行完后才执行后面的代码
  • python下用os.execl执行centos下的系统时间同步命令ntpdate
  • 怎么在一个程序的执行过程中中止执行它?比如一个按钮的响应程序中,执行一半中止??20分!!!
  • linux下通过crond实现自动执行程序
  • 我用GCC生成的可执行文件无法直接在shell命令行下执行,这是为什么?可以用调试器调入执行。我用Red Hat7.0
  • linux下nm命令(显示可执行文件的符号信息)介绍以及常见nm命令用法举例
  • 如何实现一个线程组内多线程的非同不执行,即一个线程执行完毕后再执行下一个线程???
  • Linux下指定运行时加载动态库路径及shell下执行程序默认路径
  • 请问:我发现如果在/usr/local/bin 与/usr/bin下都有同一个执行文件时,当在shell下执行时,只会执行/usr/local/bin,下的,怎么改过来?
  • linux下不使用sudo命令执行docker的操作步骤
  • SUSE10下,如何使用perl语言执行一条语句:从一台机器telnet到远端另一台机器,在远端机器上执行命令,并能获取到执行结果。请高手指点,Very 谢谢~


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3