Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C#中运行Javascript最可靠的方法?_C#_Javascript_Typescript - Fatal编程技术网

在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);
}