WebClient运行javascript
我有一个。 aspx页面,它有一些控制分页的JavaScript函数。
我可以通过webbrowser在WebBrowser1_DocumentCompleted
使用以下方法运行此javascript函数
WebBrowser1.Document.Window.DomWindow.execscript ("somefunction();", "JavaScript")
webbrowser非常慢,我更喜欢使用System.Net.WebClient.DownloadString
。
有一些方法可以使用更快或其他方式的System.Net.WebClient
方法运行此脚本吗?
好吧,不。 WebClient
是HTTP客户端,而不是Web浏览器。
HTTP客户端遵循HTTP规范; 您的HTTP请求导致HTML的事实与客户端无关。
另一方面,Web浏览器除了是HTTP客户端之外,还知道如何解析HTML响应(以及执行JavaScript等)。
看起来你所寻找的东西被称为“无头浏览器”,它支持在DOM上加载HTML和运行JavaScript,就像你需要的那样。 与普通浏览器相比,无头浏览器通常也非常快,因为它们不需要进行任何渲染。
有几个无头浏览器。 HtmlUnit (可以转换为在.NET上运行)似乎是一个不错的选择,就像envjs一样 (它是用JavaScript编写的, 可以嵌入.NET中 )。 不幸的是,我对这两者都没有经验,但它们看起来都非常酷,特别是envjs。 更新: GitHub上发布了一个不错的,更新的无头浏览器列表。
WebBrowser
控件还有其他替代方法 ,如果您想要使用控件,可能会或者可能不会更快。