gpt4 book ai didi

c# - 在 C# 中运行 Javascript 的最可靠方法?

转载 作者:搜寻专家 更新时间:2023-10-30 21:07:33 25 4
gpt4 key购买 nike

首先我尝试从 WebBrowser Control 运行

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

它几乎完美地工作。它知道什么是 windowalert 是...唯一的问题是它显然在 ECMA3 上运行,所以当我测试 "abc ".trim() 无法执行。

我的第二次尝试是 Javascript .NET .

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

不幸的是,它不知道什么是alertwindowdocumentconsole...。除非我告诉它设置上下文参数。

还有什么?我可以尝试一些 headless 浏览器并使用 Process 调用吗?

最佳答案

如果你想运行 JavaScript 服务器端,我建议使用 PhantomJS .它允许您使用 JavaScript 和命令行参数从命令行运行完整的 WebKit 浏览器。

关于c# - 在 C# 中运行 Javascript 的最可靠方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17600959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com