C#处理JavaScript引擎
概述
通常JavaScript在Web浏览器执行展现特定效果,C#也可以后台执行JavaScript里面方法;C#通常调用第三方DLL方式:MsieJavaScriptEngine或者JavaScriptEngineSwitcher。具体使用列举如下;
MsieJavaScriptEngine使用
Nuget里面,添加MsieJavaScriptEngine的类库;由于MsieJavaScriptEngine不支持.NET Core下Linux的部署运行,代码使用方式如下:
public static string Ck3(string cert, string ts, string nullPara, string page, string token)
{
var basePath = AppDomain.CurrentDomain.BaseDirectory;
using (var jsEngine = new MsieJsEngine())
{
jsEngine.ExecuteFile(string.Format(@"{0}/Scripts/myscript.js", basePath));
string[] arr = new string[] { cert, ts, nullPara, page, token };
jsEngine.Execute("var $CFMethod=$.ck;");
var publickey = jsEngine.CallFunction("$CFMethod", arr);
return publickey.ToString();
}
}
JavaScriptEngineSwitcher的使用
Nuget里面,添加JavaScriptEngineSwitcher的类库;由于JavaScriptEngineSwitcher支持.NET Core下Linux和Win的部署运行,另外还需要安装的类库
JavaScriptEngineSwitcher.ChakraCore.Native.linux-x64 ///针对Linux-x64环境下组件;
JavaScriptEngineSwitcher.ChakraCore.Native.win-x64 //针对Wind-x64环境下组件;
JavaScriptEngineSwitcher.ChakraCore.Native.win-x32 //针对Wind-x32环境下组件;
代码使用方式如下:
public static string Ck(string cert, string ts, string nullPara, string page, string token)
{
var basePath = AppDomain.CurrentDomain.BaseDirectory;
IJsEngineSwitcher engineSwitcher = JsEngineSwitcher.Current;
engineSwitcher.EngineFactories.Add(new ChakraCoreJsEngineFactory());
engineSwitcher.DefaultEngineName = ChakraCoreJsEngine.EngineName;
using (IJsEngine engine = JsEngineSwitcher.Current.CreateDefaultEngine())
{
engine.ExecuteFile(string.Format(@"{0}/Scripts/myscipt.js", basePath));
string[] arr = new string[] { cert, ts, nullPara, page, token };
engine.Execute("var $CFMethod=$.ck;");
var publickey = engine.CallFunction("$CFMethod", arr);
return publickey.ToString();
}
}
C#处理JavaScript引擎的更多相关文章
- [WebKit内核] JavaScript引擎深度解析--基础篇(一)字节码生成及语法树的构建详情分析
[WebKit内核] JavaScript引擎深度解析--基础篇(一)字节码生成及语法树的构建详情分析 标签: webkit内核JavaScriptCore 2015-03-26 23:26 2285 ...
- 浏览器-09 javascript引擎和Chromium网络栈
语言的运行 C/C++语言 使用编译器直接将它们编译成本地代码(机器指令),这是由开发人员在代码编写完成之后实施; 用户只是使用这些编译好的本地代码,这些本地代码被系统的加载器加载执行,由操作系统调度 ...
- 微软Edge 内嵌的JavaScript 引擎即将开源
微软于今日(2015年12月10日)宣布即将开源Chakra核心控件,并改名为“ChakraCore”,该控件包含所有Edge JavaScript 引擎的所有核心功能.ChakraCore 将于下月 ...
- javascript引擎工作原理
1. 什么是JavaScript解析引擎? 简单地说,JavaScript解析引擎就是能够“读懂”JavaScript代码,并准确地给出代码运行结果的一段程序.比方说,当你写了 var a = 1 + ...
- 我们应该如何去了解JavaScript引擎的工作原理
“读了你的几篇关于JS(变量对象.作用域.上下文.执行代码)的文章,我个人觉得有点抽象,难以深刻理解.我想请教下通过什么途径能够深入点的了解javascript解析引擎在执行代码前后是怎么工作的,ec ...
- 【转】我们应该如何去了解JavaScript引擎的工作原理
原文地址:http://www.nowamagic.net/librarys/veda/detail/1579 昨天收到一封来自深圳的一位前端童鞋的邮件,邮件内容如下(很抱歉,未经过他的允许,公开邮件 ...
- Javascript引擎单线程机制及setTimeout执行原理说明
setTimeout用法在实际项目中还是会时常遇到.比如浏览器会聪明的等到一个函数堆栈结束后才改变DOM,如果再这个函数堆栈中把页面背景先从白色设为红色,再设回白色,那么浏览器会认为DOM没有发生任何 ...
- JavaScript引擎研究与C、C++与互调用(转)
本文转自:ice6015的专栏.为什么有些招聘需要熟悉JS和C++,这或许就是原因. 1. 概要 JavaScript是一种广泛用于Web客户端开发的脚本语言,常用来控制浏览器的DOM树,给HTML ...
- V8 Javascript 引擎设计理念
Netscape Navigator 在 90 在年代中期对 JavaScript 进行了集成,这让网页开发人员对 HTML 页面中诸如 form .frame 和 image 之类的元素的访问变得非 ...
- 理解WebKit和Chromium: JavaScript引擎简介
转载请注明原文地址:http://blog.csdn.net/milado_nju 1. 什么是JavaScript引擎 什么是JavaScript引擎?简单来讲,就是能够提供执行JavaScript ...
随机推荐
- LOJ#2085 循环之美
解:首先看这个纯循环到底是什么玩意..... 经过一番打表,发现纯循环小数就是分母与进制互质的既约分数. #include <bits/stdc++.h> std::bitset<& ...
- Apicloud学习第三天——获取云数据库的数据方法
apicloud学习30天中的对用进行注册和登录以及数据的获取的代码,在apicloud中有单独的api对用户的增删查改进行操作,这里写下增加和查询. 增加用户数据 var model=api.req ...
- Jenkins实践之入门体验
官网:https://jenkins.io/ 持续集成,快速发布是DevOps实践的最好方式. 目录 准备工作 下载/安装/启动 基础配置 插件配置 构建第一个Java项目 部署项目 准备工作 在使用 ...
- Java JPS找不到正在执行的java进程 jps cannot see running java process
最近磁盘进展,把临时目录/tmp给全删了,结果发现jps的输出为空,找不到正在运行的jvm进程. 但是新建的进程没有问题,能够正常查看: [root@node-master ~]# ps -e|gre ...
- .net 笔试题目
2.1.using关键字有什么用?什么是IDisposable? using可以声明namespace的引入,还可以实现非托管资源的释放,实现了IDisposiable的类在using中创建,usin ...
- vue生命周期的理解
我从官网上下载了一张vue生命周期的图,接下来实际分析一波vue到底执行了什么东西. 1.我们在使用vue时必不可少的操作就是 var vm = new Vue({}),这样我们就创建了一个vue的实 ...
- 程序到CPU的路径
汇编 源码->编译->CPU C/C++ 源码->编译->机器码->系统(执行)->CPU Java/.NET 源码->编译->J字节码->虚拟机 ...
- 在mysql 5.7中,创建表的字段名中包含双引号的时候,执行会报错
解决办法,添加 SET SESSION SQL_MODE=ANSI_QUOTES;
- Linux的快捷键一
- MySQL保留字不能作为字段名使用
在设计MySQL字段的时候,无意中使用InOut这个名称作为字段名称,结果前端提交后就是没有写入数据库!但后端没有任何提示,跟踪mySQL日志,也没有留下痕迹,反复查,不得其解. 后来实在没有办法情况 ...