题
下面的问题:
我在IE中的挂钩,反作用于WebBrowser.OnNavigateComplete2
事件解析文档的内容对于一些精确信息。
这文件包含框架,所以我看到HTMLDocument.frames
。对于每一个,我期待到document.body.outerHTML属性来检查的内容。
但问题是,我在寻找永远的字符串显示在那里,而它会显示在压轴页。所以,我在找错了地方?如果显示在页面完全加载,那么它在某个点下载,对不对?但在哪个对象应该怎么看?
顺便说一句,我不知道如果这是任何意义,但我搜索到的页面来自一个ASP.NET应用程序。
public void OnNavigateComplete2(object pDisp, ref object url)
{
document = (HTMLDocument)webBrowser.Document;
mshtml.FramesCollection frames = document.frames;
for (int i = 0; i < frames.length; i++)
{
object refIdx = i;
IHTMLWindow2 frame = (IHTMLWindow2)frames.item(ref refIdx);
string frameContent = frame.document.body.outerHTML;
}
}
感谢您的帮助。
@rams 此事件是推出了许多次,每次页面,所以我想这是每一个框架被加载时,即使我没有得到赶上一个我要找的。如果不是这样,这将是赶上帧内容的情况?
我想要做的就是在检测精确帧精确的一些信息,然后保存。后来,网页加载一些用户操作,我需要从我的分析框架得到了信息触发。
解决方案
你知道你正在寻找的内容框架的名称/ ID?如果是这样,在你navigateComplete2事件,你能得到像
在框架上的参考iFrame frm = document.frames(<your frame id>);
int readyState=0;
while(frm.readystate !=4){
// do nothing. be careful to not create an endless loop
}
if(frm.readyState==4){
// get your content now
}
HTH
其他提示
您使用某种类型的线程的?运行在一个单独的线程浏览器真的弄乱的东西。尝试在STAThread执行,并检查你得到正确的结果。
您的字符串不显示的原因是因为该框架。它加载到主文档后,web浏览器控件激发文档浏览完整的事件。在这一点上,框架还没有要求它们的来源。该文件是由web浏览器控制解析之后,框架来源请求是问题和下载。
您可以请描述你所要完成的是什么?
不隶属于 StackOverflow