/// <summary>
/// 直接调用JS方法并获取返回的值
/// </summary>
/// <param name="strJs">要执行的JS代码</param>
/// <param name="main">要调用的方法名</param>
/// <returns>执行结果</returns>
public static string JavaScriptEval(string strJs, string main)
function main1() {
return 1 + 1;
}
function main2(n) {
return 1 + n;
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using CsharpHttpHelper;
namespace CsharpHttpHelper_Demo
{
public partial class HttpJs_Demo : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string strjs = string.Empty;
using (StreamReader sr = new StreamReader(Server.MapPath("test.js")))
{
strjs = sr.ReadToEnd();
}
//调用不带参数的方法
string main1 = HttpHelper.JavaScriptEval(strjs, "main1()");
//调用带参数的方法
string main2 = HttpHelper.JavaScriptEval(strjs, "main2(25)");
//直接执行JS代码
string jiafa = HttpHelper.JavaScriptEval(string.Empty, "25+1+4");
//直接执行JS代码
string time = HttpHelper.JavaScriptEval(string.Empty, " new Date().toString()");
}
}
}
检索 COM 类工厂中 CLSID 为 {0E59F1D5-1FBE-11D0-8FF2-00A0D10038BC} 的组件失败,原因是出现以下错误: 80040154 没有注册类 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))。
shensi88 发表于 2014-11-2 21:00
[mw_shl_code=csharp,true]检索 COM 类工厂中 CLSID 为 {0E59F1D5-1FBE-11D0-8FF2-00A0D10038BC} 的组件失 ...
站长苏飞 发表于 2014-11-3 08:04
这个问题是在什么时候报的
我是MT 发表于 2015-1-7 02:32
老大,你这个test.js放在exe同目录下面的吗,还有这个东西要在main入口执行的吧。这个demo不知道如何运行呢 ...
站长苏飞 发表于 2015-1-7 12:16
在那里执行都行,主要是调用方法,这个在源码的Web页面里有啊你看代码上有贴的文件名
站长苏飞 发表于 2015-1-7 12:16
在那里执行都行,主要是调用方法,这个在源码的Web页面里有啊你看代码上有贴的文件名
howzew 发表于 2015-1-14 00:30
这个方法在winform中可以使用么
我是MT 发表于 2015-1-16 22:53
测试js的时候我直接把文件放在桌面的。如果是生成exe文件,我想把这个JS放到C#里面作为资源文件来引 ...
站长苏飞 发表于 2015-1-17 09:21
资源文件也是一个类,直接使用类.你的资源名就行了,
我是MT 发表于 2015-1-19 14:36
建议苏飞把正则匹配这里 防止程序假死搞一下。try catch 。匹配到了就返回ture,没有匹配到返回false。
站长苏飞 发表于 2015-1-7 12:16
在那里执行都行,主要是调用方法,这个在源码的Web页面里有啊你看代码上有贴的文件名
1790968956 发表于 2015-4-19 12:20
HttpHelper.JavaScriptEval 这方法我为什么掉不到?
a896351151 发表于 2015-5-25 22:10
看不懂
可以标注下哪些是必须项呢
是不是只要这些段代码就可以吗
站长苏飞 发表于 2015-5-26 08:01
//调用不带参数的方法
string main1 = HttpHelper.JavaScriptEval(strjs, "main1()");
function filterAndSign(oriToSign, certs) {
var arrayCerts = filterCerts("CN=JD.COM End User CA, OU=JD.COM Security Center, O=JD.COM", 0, "");
var signCert;
var type = 0;
var arrayCN = new Array();
arrayCN = certs.split(",");
if (typeof arrayCerts[0] != "undefined") {
for (var i = 0; i < arrayCerts.length; i++) {
if (typeof arrayCN[0] != "undefined") {
for (var j = 0; j < arrayCN.length; j++) {
if ((type != 1) && equalsIgnoreCase(arrayCerts.SerialNumber, arrayCN[j])) {
signCert = arrayCerts;
type = 1;
break;
}
}
} else {
return "";
}
}
} else {
return "";
}
if(typeof signCert != "undefined") {
var signedData = signMessage(oriToSign,signCert);
return [signCert.SerialNumber,signedData];
} else {
return "";
}
}
库特吉 发表于 2017-3-23 10:29
苏大,我加载js文件,执行相关函数提示报错, System.Reflection.TargetInvocationException,文件内容比较 ...
欢迎光临 苏飞论坛 (http://www.sufeinet.com/) | Powered by Discuz! X3.4 |