C# webbrowser控件是不是能获取JS加载的数据?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# webbrowser控件是不是能获取JS加载的数据?相关的知识,希望对你有一定的参考价值。
一个站点是JS加载数据的,所以在html里是没有数据的,而需要浏览器执行JS后才有。所以我打算用webbrowser来让JS运行起来,我是否能获取到JS加载后的数据呢?
比如我获取一DIV里的值
<div id="name"></div> js会加数据到name 容器中的。。。用InnerHtml。。。OuterHtml都是不行
App.Browser.Navigate("目标地址", UriKind.Absolute));
App.Browser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(Browser_DocumentCompleted);
private void Browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
if (e.Url.AbsoluteUri.ToUpper() == String.Format(UploadConfig.UpLoadUrl, App.CUser.SkyDriveUID).ToUpper())<br> <br> HtmlElement div = App.Browser.Document.All["name"];<br> App.Browser.DocumentCompleted -= new WebBrowserDocumentCompletedEventHandler(Browser_DocumentCompleted);<br>
div.InnerHtml可以拿到你想要的 参考技术A JS写数据一般都是通过动态的AJAX来获取的.但是一般通过AJAX获取数据的方式都是POST,这样比较安全, WebBrowser 其实是对 ActiveX 控件 SHDocVw 的封装,而这个SHDocVw的很多底层调用WebBrowser控件并没有提供实现,我们需要直接操作 SHDoceVw 控件来实现这些高级调用。操作方法如下:
1、在 windows/system32 目录下找到 shdocvw.dll 这个动态库,将其添加到引用中2、在 Form1_Load 中添加如下语句SHDocVw.WebBrowser wb = (SHDocVw.WebBrowser)webBrowser1.ActiveXInstance;
wb.BeforeNavigate2 += new DWebBrowserEvents2_BeforeNavigate2EventHandler(WebBrowser_BeforeNavigate2);3、添加如下成员函数private void WebBrowser_BeforeNavigate2(object pDisp, ref object URL, ref object Flags,
ref object TargetFrameName, ref object PostData, ref object Headers, ref bool Cancel)
string postDataText = System.Text.Encoding.ASCII.GetString(PostData as byte[]);
完成上述3步后,你post 数据时, 就会响应 BeforeNavigate2 事件,postDataText 中就是你post的数据。你也可以修改PostData,对这些数据进行转换或加密。
webbrowser控件如何获取网页回传的数据
我做了一个自动发票查询的程序,链接的是友商网,我应该怎么获取网站查询之后回传的数据啊,求高手解答
可以使用WebClient,也可以直接使用WebRequestWebClient是封装了WebRequest的更简单的类
WebReqest如果使用,可以参考:
http://msdn.microsoft.com/zh-cn/library/system.net.httpwebrequest(v=vs.80).aspx 参考技术A webbrowser 只是一个控件 用来打开web页面的话。你还是可以用webclient这种来获取到该web的数据的啊追问
能详细说一下吗,我是新人,对这方面不太懂,谢啦
追答webbrowser 相当于只是一个镜框 里面什么东西,还是web来决定的。所以返回来什么数据的话,还是可以由web的方式来获取的 即webclient 这种web连接来获取数据。
以上是关于C# webbrowser控件是不是能获取JS加载的数据?的主要内容,如果未能解决你的问题,请参考以下文章