C# webbrowser控件是否能获取JS加载的数据?

一个站点是JS加载数据的,所以在HTML里是没有数据的,而需要浏览器执行JS后才有。所以我打算用webbrowser来让JS运行起来,我是否能获取到JS加载后的数据呢?比... 一个站点是JS加载数据的,所以在HTML里是没有数据的,而需要浏览器执行JS后才有。所以我打算用webbrowser来让JS运行起来,我是否能获取到JS加载后的数据呢?
比如我获取一DIV里的值
<div id="name"></div> js会加数据到name 容器中的。。。用InnerHtml。。。OuterHtml都是不行
展开
 我来答
匿名用户
2013-07-04
展开全部
可以的,但这个控件存在内存泄露哦

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可以拿到你想要的
匿名用户
2013-07-04
展开全部
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,对这些数据进行转换或加密。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式