C#webbrowser控件是不是能获取JS加载的数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#webbrowser控件是不是能获取JS加载的数据相关的知识,希望对你有一定的参考价值。
参考技术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,对这些数据进行转换或加密。本回答被提问者和网友采纳 参考技术B 可以的.~~~~~
如何用webbrowser控件获取html源文件
参考技术A procedure TForm1.Button1Click(Sender: TObject);var
ole_index, oleObj: OleVariant;
i: integer;
begin
if WebBrowser1.Busy then Exit; //网页加载中,退出。
Memo1.Lines.Clear;
//获取主框架网址及网页源码
Memo1.Lines.Add(WebBrowser1.OleObject.document.url);
Memo1.Lines.Add(WebBrowser1.OleObject.document.documentElement.outerHTML);
Memo1.Lines.Add(' '); Memo1.Lines.Add(' '); //添加空行
//循环获取每一个子框架网址及网页源码
for i := 0 to WebBrowser1.OleObject.document.frames.length - 1 do
begin
ole_index := i;
oleObj := WebBrowser1.OleObject.document.frames.item(ole_index);
Memo1.Lines.Add(oleObj.document.url);
Memo1.Lines.Add(oleObj.document.documentElement.outerHtml);
Memo1.Lines.Add(' '); Memo1.Lines.Add(' '); //添加空行
end;
end; 参考技术B 是哪一种开发语言?
C#:
string s=webbrowser1.DocumentText;
Delphi:
s := webbrowser1.oleobject.document.body.innerhtml;本回答被提问者和网友采纳 参考技术C WebBrowser1.Document.documentElement.outerHTML 参考技术D srcTxt = WebBrowser1.Document.documentElement.outerHTML
以上是关于C#webbrowser控件是不是能获取JS加载的数据的主要内容,如果未能解决你的问题,请参考以下文章