您的位置:首页 > Web前端 > JavaScript

C#Winform中或控制台中调用javascript

2015-02-25 11:53 363 查看
非Web中调用javascript需要引用Interop.MSScriptControl.dll

实例:

此项目建立Javascript文件夹,存放javascript

Program.cs文件内容
static void Main(string[] args)
{
String[] arr = new String[] { "" };

RunScript("", arr, @"/Javascript/Test.js"); //要调用的js文件相对路径
}

/// <summary>
/// 调用JavaScript 方法
/// </summary>
/// <param name="method">方法名</param>
/// <param name="pars">方法参数</param>
/// <param name="jspath">要调用方法的JavaScript文件路径</param>
/// <returns></returns>
public static object RunScript(string method, string[] pars, string jspath)
{

ScriptControlClass sc = new ScriptControlClass();
sc.Language = "javascript";
string javascript1 = readFile(jspath);
sc.AddCode(javascript1);
//string mainCons = method + "(" + temppars;
//object obj = sc.Eval(javascript1);
object obj = sc.Run("TestMethod", new object[] { }); //执行测试方法
return obj;
}

private static string readFile(string jspath)
{
String path = AppDomain.CurrentDomain.BaseDirectory; //获取工作目录
//FileStream file = File.Open(jspath,FileMode.Open);
String fileContent = File.ReadAllText(path + jspath); //读取文件内容
return fileContent;
}


ScriptControlClass sc = new ScriptControlClass();
此注意将Interop.MSScriptControl.dll引用的属性嵌入互操作类型更改为false

Test.js内容:

function TestMethod() {
//return 1 + 1;
var str1 = '{ "name": "cxh", "sex": "man" }';
var json = eval('(' + str1 + ')');
return json.name;
}
此处原本想打算javascript文件中引入其他javascript,但是未找到相关方法,打算在代码中将jquery.js内容读出,并联合Test.js一起使用,但是此时报错,提示:“window未找到”,无法实现通过jqueryjson来转换string。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: