C#调用JS的几种方法

 更新时间:2020年12月29日 08:54:10   作者:Lulus  
这篇文章主要介绍了C#调用JS的几种方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下

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(比较新,没有实验)    
https://github.com/Microsoft/ClearScript  

比较绕的一种方式

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

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

比较麻烦的一种方式

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

以上就是C#调用JS的几种方法的详细内容,更多关于C#调用JS的资料请关注脚本之家其它相关文章!

相关文章

  • C#图像伪彩色处理方法

    C#图像伪彩色处理方法

    这篇文章主要介绍了C#图像伪彩色处理方法,涉及C#操作图像的伪彩色相关技巧,需要的朋友可以参考下
    2015-04-04
  • C#中C/S端实现WebService服务

    C#中C/S端实现WebService服务

    本文主要介绍了C#中C/S端实现WebService服务,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • WPF实现2048小游戏

    WPF实现2048小游戏

    这篇文章主要为大家详细介绍了WPF实现2048小游戏,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • C# 获取打印机当前状态的方法

    C# 获取打印机当前状态的方法

    C# 获取打印机当前状态的方法,需要的朋友可以参考一下
    2013-04-04
  • C#实现文本文件读写方法汇总

    C#实现文本文件读写方法汇总

    本文给大家汇总介绍了C#实现文本文件读写的方法,十分的简单实用,有需要的小伙伴可以参考下。
    2015-06-06
  • c#数据绑定之数据转化为信息的示例

    c#数据绑定之数据转化为信息的示例

    这篇文章主要介绍了c#数据绑定中的数据转化为信息的示例,需要的朋友可以参考下
    2014-04-04
  • 深入多线程之:深入生产者、消费者队列分析

    深入多线程之:深入生产者、消费者队列分析

    本篇文章是对生产者与消费者队列进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C#开发Winform程序调用存储过程

    C#开发Winform程序调用存储过程

    这篇文章介绍了C#开发Winform程序调用存储过程的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • 详解C#如何实现分割视频

    详解C#如何实现分割视频

    这篇文章主要为大家详细介绍了C#如何实现将视频文件分割成一帧帧图片的方法,文中的示例代码讲解详细,对我们学习C#有一定的帮助,感兴趣的小伙伴可以跟随小编一起了解一下
    2022-12-12
  • C#实现文件与Base64的相互转换

    C#实现文件与Base64的相互转换

    本文主要介绍了C#实现文件与Base64的相互转换,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06

最新评论