架构师_程序员

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 150|回复: 4

[新问题] C# winform 调用 js 问题

[复制链接]
发表于 2020-2-18 10:30:34 | 显示全部楼层
zu
网上搜索到的一个C#调用JS的方案  
   public string GetTimeByJs()
        {
            Type obj = Type.GetTypeFromProgID("ScriptControl");
            if (obj == null) return null;
            object ScriptControl = Activator.CreateInstance(obj);
            obj.InvokeMember("Language", BindingFlags.SetProperty, null, ScriptControl, new object[] { "JavaScript" });
            string js = "function time(a, b, msg){ var sum = a + b; return new Date().getTime() + ': ' + msg + ' = ' + sum }";
            obj.InvokeMember("AddCode", BindingFlags.InvokeMethod, null, ScriptControl, new object[] { js });
            return obj.InvokeMember("Eval", BindingFlags.InvokeMethod, null, ScriptControl, new object[] { "time(1, 2, '1 + 2')" }).ToString();
        }   


测试是没问题的。
time(1, 2, '1 + 2') ,这里传入的参数是 (数字1,数字2,字符串1+2)  。
但是有个疑问, new object[] { "time(1, 2, '1 + 2')" }   ,如果JS方法的参数是byte[] 类型的,调用的时候这里应该怎么写呢。





上一篇:SQLyog-12.0.9-0含注册码
下一篇:资源上传审核
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2020-2-18 10:56:17 | 显示全部楼层
javascript 数据类型可以分为两类:

基本类型值 primitive type :      比如Undefined,Null,Boolean,Number,String
引用类型值,也就是对象类型 : Object type,比如Object,Array,Function,Date



JS方法的参数没有byte[]的,一切皆object
利用Jurassic在.net下执行js函数
https://www.itsvse.com/thread-4303-1-1.html
(出处: 架构师_程序员)


码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2020-2-18 14:10:18 | 显示全部楼层
小渣渣 发表于 2020-2-18 10:56
javascript 数据类型可以分为两类:

基本类型值 primitive type :      比如Undefined,Null,Boolean,Numb ...

敖是这样啊我对JS不太了解。
如果,
假设js的time函数参数是一个 Array
function time(Array ){....................}

按照这个C#的函数的最后一句
return obj.InvokeMember("Eval", BindingFlags.InvokeMethod, null, ScriptControl, new object[] { "time(????)" }).ToString();

我想传一个Array   
var mycars = new Array();
mycars[0] = "a";
mycars[1] = "b";
mycars[2] = "c";

如果仅仅是对这个C#代码实现调用JS,不考虑其他的代码方式。那在这个C#代码中的???参数应该怎么写呢?
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2020-2-18 14:17:06 | 显示全部楼层
zncliving 发表于 2020-2-18 14:10
敖是这样啊我对JS不太了解。
如果,
假设js的time函数参数是一个 Array

额 我只能提供给你思路 并不能帮你写代码

代码还是需要你自己研究哦
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2020-2-18 14:35:32 | 显示全部楼层
小渣渣 发表于 2020-2-18 14:17
额 我只能提供给你思路 并不能帮你写代码

代码还是需要你自己研究哦

好滴 我在找找资料
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|Archiver|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2020-3-28 20:28

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表