当前位置: 首页 > 编程笔记 >

C#调用JS的几种方法

司徒博容
2023-03-14
本文向大家介绍C#调用JS的几种方法,包括了C#调用JS的几种方法的使用技巧和注意事项,需要的朋友参考一下

cmd调用phantomjs

官方资料:http://phantomjs.org/quick-start.html

手动执行

从官方下载phantomjs.exe,拷贝它与要执行的js同目录
打开cmd,输入命令行(参考官方资料的命令行)

phantomjs XX.js 参数1 参数2

获得结果

使用C#执行

//注意:保证phantomjs.exe和js在生成目录下存在
string url = "传参";
//这里调用cmd.exe
Process pProcess = new Process();
//调用phantomjs.exe
pProcess.StartInfo.FileName = $"phantomjs.exe所在路径(可以是相对路径)";
pProcess.StartInfo.RedirectStandardOutput = true;
pProcess.StartInfo.UseShellExecute = false;
pProcess.EnableRaisingEvents = false;
//在phantomjs.exe里面执行的命令
pProcess.StartInfo.Arguments = $"Test2.js所在路径(可以是相对路径) {url}";
pProcess.Start();

char[] spliter = { '\r' };
StreamReader sReader = pProcess.StandardOutput;
string[] output = sReader.ReadToEnd().Split(spliter);

foreach (string s in output)
  Console.WriteLine(s);

pProcess.WaitForExit();

//取出计算结果
Console.WriteLine(output[0]);
pProcess.Close();

JS如下:
function Test() {
  //创建phantomjs对象
  var system = require('system');
  //取出参数
  var data = system.args[1];
  console.log(Math.floor(data));
}

Test();
phantom.exit();

示例代码:https://github.com/zLulus/NotePractice/tree/dev3/Console/CodeLibrary/ExcuteJsByPhantomjs

C#调用JS库

1.jint:https://github.com/sebastienros/jint

可用,但是没有JS的环境
jQuery support:https://github.com/sebastienros/jint/issues/240

//引用:Jint
string filePath = $"{Environment.CurrentDirectory}//ExcuteJs//TestJs.js";
string data1 = "1";
string data2 = "2";
string jsCode = System.IO.File.ReadAllText(filePath);
var square = new Engine()
        .SetValue("data1", data1) // define a new variable
        .SetValue("data2", data2) // define a new variable
        .Execute(jsCode) // execute a statement
        .GetCompletionValue() // get the latest statement completion value
        .ToObject(); // converts the value to .NET

示例代码:https://github.com/zLulus/NotePractice/tree/dev3/Console/CodeLibrary/ExcuteJs

2.Microsoft.JScript

https://docs.microsoft.com/zh-cn/dotnet/api/microsoft.jscript?redirectedfrom=MSDN&view=netframework-4.8&WT.mc_id=DT-MVP-5003010

3.使用CefSharp创造浏览器环境

CefSharp参考我的资料:https://www.cnblogs.com/Lulus/p/7998297.html

(PS:还有几篇关于CefSharp的资料,在此不一一列出)

4.Microsoft.ClearScript(比较新,没有实验)    
html" target="_blank">https://github.com/Microsoft/ClearScript  

比较绕的一种方式

控制台http请求网页->网页调用js->得到结果js对象->结果返回给控制台(即时通讯:SignalR)

即时通讯参考我的资料:http://www.cnblogs.com/Lulus/p/8780595.html

比较麻烦的一种方式

JS翻译成C#……是的,翻译=.=

以上就是C#调用JS的几种方法的详细内容,更多关于C#调用JS的资料请关注小牛知识库其它相关文章!

 类似资料:
  • 本文向大家介绍js的函数有哪几种调用形式?相关面试题,主要包含被问及js的函数有哪几种调用形式?时的应答技巧和注意事项,需要的朋友参考一下 其中, 和 使得函数内的 this 被绑定到 上。 同时可以使用 来产生绑定到某个 this 的函数变体。

  • 本文向大家介绍浅谈几种常用的JS类定义方法,包括了浅谈几种常用的JS类定义方法的使用技巧和注意事项,需要的朋友参考一下 // 方法1 对象直接量 // 方法2 定义函数对象 // 方法3 原型继承 // 方法4 工厂模式 以上这篇浅谈几种常用的JS类定义方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 本文向大家介绍js定义类的几种方法(推荐),包括了js定义类的几种方法(推荐)的使用技巧和注意事项,需要的朋友参考一下 ECMAScript6已经支持了class,但之前版本都不支持类,但是可以通过一些方法来模拟类。 js中的类,既是重点,也是难点,很多时候都感觉模棱两可。 首先强调一下js中很重要的3个知识点:this、prototype、constructor。 下面我们来总结一下定义(模拟)

  • 本文向大家介绍Js面向对象的几种方式相关面试题,主要包含被问及Js面向对象的几种方式时的应答技巧和注意事项,需要的朋友参考一下 1.对象的字面量 var obj = {} 2.创建实例对象 var obj = new Object(); 3.构造函数模式 function fn(){} , new fn(); 4.工厂模式:用一个函数,通过传递参数返回对象。function fn(params){

  • 本文向大家介绍详解js 创建对象的几种方法,包括了详解js 创建对象的几种方法的使用技巧和注意事项,需要的朋友参考一下 在js中创建对象的方法可分为6种,分别是:基本模式、工厂模式、构造函数模式、原型模式、组合模式、动态原型模式,接下来分别看下这几种模式的写法吧 一、基本模式 二、工厂模式 缺点:1、实例之间没有联系;2、没有使用new关键字;3、会造成资源的浪费,每生成一个实例都会都会增加一些重

  • 本文向大家介绍JS中继承实现的几种方式?相关面试题,主要包含被问及JS中继承实现的几种方式?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 1、原型链继承,将父类的实例作为子类的原型,他的特点是实例是子类的实例也是父类的实例,父类新增的原型方法/属性,子类都能够访问,并且原型链继承简单易于实现,缺点是来自原型对象的所有属性被所有实例共享,无法实现多继承,无法向父类构造函数传参。 2、构造继