WebClient 运行 javascript

IT技术 c# javascript .net browser webclient
2021-03-22 03:53:45

我有一个。aspx 页面,它具有一些控制分页的 JavaScript 函数。

我可以通过 webbrowser 使用以下方法运行这个 javascript 函数 WebBrowser1_DocumentCompleted

WebBrowser1.Document.Window.DomWindow.execscript ("somefunction();", "JavaScript")

网络浏览器很慢,我更喜欢使用System.Net.WebClient.DownloadString.

有没有办法用System.Net.WebClient更快方法或其他方式运行这个脚本

1个回答

嗯,不。WebClientHTTP客户端,而不是 Web 浏览器。

HTTP 客户端遵循 HTTP 规范;您的 HTTP 请求生成 HTML 的事实与客户端无关。

另一方面,Web 浏览器除了作为 HTTP 客户端之外,还知道如何解析 HTML 响应(以及执行 JavaScript 等)。

看起来您正在寻找的东西被称为“无头浏览器”,它支持在 DOM 上加载 HTML 和运行 JavaScript,完全符合您的需要。与普通浏览器相比,无头浏览器通常也相当快,因为​​它们不需要进行任何渲染。

有几种无头浏览器。HtmlUnit(可以转换为在 .NET 上运行)似乎是一个不错的选择,envjs(它是用 JavaScript 编写的,可以嵌入到 .NET 中)也是如此。不幸的是,我对两者都没有经验,但它们看起来都非常酷,尤其是 envjs。更新:一个不错的、更新的无头浏览器列表已发布在 GitHub 上

如果您想继续使用控件,还有其他控件的替代方法WebBrowser在您的情况下可能会或可能不会更快。