C#中如何使用JS脚本
C#中如何使用JS脚本
目前在做的组态软件中就使用到了js脚本,这部分js脚本是供用户编写的,用户可以通过我们提供的脚本以及js自身的逻辑,用户就可以随心所欲的控制设备的运行。有比较了几款在C#中执行js的库,最后还是微软大大自家的Microsoft.JScript这个稳定些,所以就使用Microsoft.JScript;来作为运行js的脚本引擎。
以下是简单使用的例子:
public object RunByJSCodeProvider(string scriptCode)
{
string md5 = DevCommon.MD5GenerateHashString(scriptCode);
if (this.msjsAssemblyTypeList.ContainsKey(md5))
{
Type _evaluateType = this.msjsAssemblyTypeList[md5];
object obj = _evaluateType.InvokeMember("JsRun", BindingFlags.InvokeMethod,
null, null, null);
return obj;
}
else
{
StringBuilder sb = new StringBuilder();
sb.Append("package Stdio{");
sb.Append(" public class JScript {");
sb.Append(" public static function JsRun() {");
sb.Append(scriptCode);
sb.Append(" }");
sb.Append(" }");
sb.Append("}");
CompilerParameters parameters = new CompilerParameters();
parameters.GenerateInMemory = true;
CodeDomProvider _provider = new Microsoft.JScript.JScriptCodeProvider();
CompilerResults results = _provider.CompileAssemblyFromSource(parameters, sb.ToString());
Assembly assembly = results.CompiledAssembly;
Type _evaluateType = assembly.GetType("Stdio.JScript");
this.msjsAssemblyTypeList.Add(md5, _evaluateType);
object obj = _evaluateType.InvokeMember("JsRun", BindingFlags.InvokeMethod,
null, null, null);
return obj;
}
代码已提交至githubZZRRegion/StdioJS
C#中如何使用JS脚本的更多相关文章
- html网页中加载js脚本 下载下来是乱码(文件编码格式)
问题描述: 在一个index.html网页中,引入了jquery脚本,但是却出现错误,提示$ is not defined <!DOCTYPE html> <html lang=&q ...
- ASP.NET中后台注册js脚本攻略(转)
用Page.ClientScript.RegisterClientScriptBlock 和Page.ClientScript.RegisterStartupScript:区别: 1.使用Page ...
- ASP.NET中常用输出JS脚本的类(来自于周公博客)
using System; using System.Collections.Generic; using System.Text; using System.Web; using System.We ...
- javascript中如何使用js脚本模拟"request"获取url后参数值呢?
转自:猫猫小屋--js获取url后参数信息 摘要: 下文讲述javascript中使用js代码获取url地址后面的参数值的方法分享,如下所示: 实现思路: 使用正则表达式对参数值进行匹配,获取参数后的 ...
- IE中无法执行JS脚本 解决WINDOWS SERVER 2008弹出INTERNET EXPLORER增强安全配置正在阻止来自下列网站的内容
在默认状态下,使用Windows Server 2008系统自带的IE浏览器访问网页内容时,我们时常发现“Internet Explorer增强安全配置正在阻止来自下列网站的内容”的提示导致不能打开网 ...
- 在js或jquery中动态添加js脚本【转】
起因: 我们在用js动态写入script时,会导致</script>后面的所有语句都变为普通文本,导致html展示无效, 所以我们需要规避</script>问题. 解决方案一( ...
- easyui中tab页中js脚本无法加载的问题及解决方法
我发现tab页中<script src="xxx.js">方式加载的脚本没有生效,firebug看请求也没有请求相应的脚本文件. 单独在浏览器中打开tab页中的页面js ...
- 也说JS脚本加载控制
问题背景 前端采用的 iframe + html 做后台管理系统.现在js.jquery插件非常多,每次页面都是引用就类似这样: <script src="../Scripts/jqu ...
- Firebug中调试中的js脚本中中文内容显示为乱码
Firebug中调试中的js脚本中中文内容显示为乱码 设置 页面 UFT-8 编码没用, 解决方法:点击 "Firebug"工具栏 中的"选项"---" ...
随机推荐
- impala安装笔记(Ubuntu)
1.Override 1.With Impala, you can query data, whether stored in HDFS or Apache HBase – including SEL ...
- Oracle数据库设计实例-实时生产效率系统数据库设计
Oracle数据库设计实例-实时生产效率系统数据库设计 引言 1.1 设计前提 某部门经理要求IT部门设计一个流水线实时生产效率系统,用来统计实时的生产量和效率.流水线有数百条,实时间隔为1min. ...
- 020hashlib模块
#里面内容没有见过,可能会比较难懂,需要找资料.我只是记录了视频中的用法,其他理解的东西,我直接理解,就没有写下来了.下面内容是视频演示过程 import hashlib m = hashlib ...
- 如何在两个月的时间内发表一篇EI/SCI论文-我的时间管理心得
在松松垮垮的三年研究生时期,要说有点像样的成果,也只有我的小论文可以谈谈了.可能有些厉害的角色研究生是丰富而多彩的,而大多数的同学在研究生阶段可能同我一样,是慢悠悠的渡过的,而且可能有的还不如我,我还 ...
- Visual Studio中头文件stdafx.h的作用
在较新版的Visual Studio中,新生成的C++项目文件的的头文件夹下会默认有头文件stdafx.h,而源文件夹下则默认有源文件stdafx.cpp,手动将这些文件删除后,编译时系统还会报错.下 ...
- Codeforces Round #433 (Div. 2)【A、B、C、D题】
题目链接:Codeforces Round #433 (Div. 2) codeforces 854 A. Fraction[水] 题意:已知分子与分母的和,求分子小于分母的 最大的最简分数. #in ...
- mac端抓包工具——Charles使用
一.简介 Charles(http://www.charlesproxy.com/)是在Mac 下常用的截取网络封包的工具.Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问 ...
- C#XML格式字符串取节点数据
XML格式的字符串: <xml><return_code><![CDATA[{0}]]></return_code><return_msg> ...
- Faster Alternatives to glReadPixels and glTexImage2D in OpenGL ES
In the development of Shou, I’ve been using GLSL with NEON to manipulate image rotation, scaling and ...
- RfcDestinationManager.UnregisterDestinationConfiguration时报错cannot unregister the given destination configuration
在使用NCO访问SAP的RFC时,我的程序代码是这么写的: string destinationName = "EWM_700_GROUP"; IDestinationConfig ...