在C#中运行Javascript最可靠的方法?
首先,我试着逃离一个 不幸的是,它不知道什么是在C#中运行Javascript最可靠的方法?,c#,javascript,typescript,C#,Javascript,Typescript,首先,我试着逃离一个 不幸的是,它不知道什么是警报,窗口,文档,控制台。。。是除非我告诉它设置上下文参数 还有什么?我可以尝试一些无头浏览器并使用进程调用吗?如果您想运行JavaScript服务器端,我建议使用。它允许您使用JavaScript和命令行参数从命令行运行完整的WebKit浏览器。JavaScript肯定不再只是用于客户端脚本。正如Cameron所说,如果您需要DOM,PhantomJS非常优秀。如果你不这样做,那么拥有丰富的图书馆是一个明确的选择。你想做什么,或者你想最终实现什么?
警报
,窗口
,文档
,控制台
。。。是除非我告诉它设置上下文参数
还有什么?我可以尝试一些无头浏览器并使用
进程调用吗?如果您想运行JavaScript服务器端,我建议使用。它允许您使用JavaScript和命令行参数从命令行运行完整的WebKit浏览器。JavaScript肯定不再只是用于客户端脚本。正如Cameron所说,如果您需要DOM,PhantomJS非常优秀。如果你不这样做,那么拥有丰富的图书馆是一个明确的选择。你想做什么,或者你想最终实现什么?通常,Javascript是客户端语言,不在服务器上执行。我只需要知道执行该函数是否会引发异常。我的目标是完成这项工作,我仍然不明白为什么Javascript会参与其中。似乎您试图在某些Linq上创建单元测试?TypeScript
是一种编译为Javascript的语言。要运行测试,我需要运行已编译的Javascript。这就是我需要执行Javascript的原因。您想对服务器端的警报做什么?将其转换为文本输出?-1表示没有回答问题,这是关于从C#运行JavaScript,而不是运行JavaScript服务器端。
WebBrowser webBrowser1 = new WebBrowser();
webBrowser1.Visible = false;
webBrowser1.Navigate("about:blank");
webBrowser1.Document.Write("<html><head></head><body></body></html>");
HtmlElement head = webBrowser1.Document.GetElementsByTagName("head")[0];
dynamic scriptEl = webBrowser1.Document.CreateElement("script");
scriptEl.DomElement.text = "function test(fn) { try{ window[fn](); } catch(ex) { return 'abc '.trim(); } }"
+ "function sayHello() { alert('ha'); throw 'error with spaces '; }";
head.AppendChild(scriptEl);
var result = webBrowser1.Document.InvokeScript("test", new object[] { "sayHello" });
using (JavascriptContext context = new JavascriptContext())
{
// Setting external parameters for the context
//context.SetParameter("console", new SystemConsole());
context.SetParameter("message", "Hello World ! ");
// Script
string script = @"
alert(message.trim());
";
// Running the script
context.Run(script);
}