问题描述
用webBrower载入页面,包含名为w_top、w_main的两个frame
然后在w_main下又包含w_code、w_lms_content的两个framew_code用于显示目录,w_lms_content用于显示内容,问题出来了
显示内容的w_lms_content中有计时的HtmlElement  "sce_timer_0",需要截获这个时间作为判断条件
但是w_lms_content的域和webBrower的域不同
代码如下,其中wb为webBrower控件名HtmlDocument w_main = wb.Document.Window.Frames["w_main"].Document;
HtmlDocument w_code = w_main.Window.Frames["w_code"].Document;
HtmlDocument w_lms_content = w_main.Window.Frames["w_lms_content"].Document;
w_lms_content得不到该载入页面的真正源码看了些资料,翻遍百度和谷歌,没找到有效解决办法看到下面代码,不理解,也不知道如果可以的话后面代码怎么写//获取frame的HTMLDocument接口HTMLDocument doc = (HTMLDocument)webBrowser1.Document.DomDocument; 
object j; 
for (int i = 0; i < doc.parentWindow.frames.length; i++) 

       j = i; 
       HTMLWindow2Class frame = doc.parentWindow.frames.item(ref j) as HTMLWindow2Class; 
       if (frame.name == "main") 
        {                    
              MessageBox.Show(frame.document.title);                     
        } 

难道这个代码可以获取到载入页面的真正源码??如果能,后面代码改怎么写???
不能的话,求大牛给出详细方法,最好是代码

解决方案 »

  1.   

    webbrower在访问某个页面后,访问的过程自然是要拿来网页的代码,然后解析显示,所以你可以通过webbrower1.Document.Html来访问到源码。也可以通过GetElementByID获得网页上的控件。
    直接用代码方式获取源码是很容易。System.Net.WebClient wc = new System.Net.WebClient();
    Byte[] pageData = wc.DownloadData("网页地址");
    string s= System.Text.Encoding.Default.GetString(pageData);后面你要干嘛?
      

  2.   

    看看这个
    http://topic.csdn.net/u/20100112/21/e77866ba-d764-4a9e-804b-139c6eea50e4.html
      

  3.   

    难道这个代码可以获取到载入页面的真正源码??如果能,后面代码改怎么写???页面有很多东西时服务器程序输出的,你要得到源代码估计不行吧?你只能得到最后输出的结果,除非页面上的
    javascript代码。而且如果使用了框架页面,你那样去获取,好像,确实拿不到框架页面内那个网页的内容。这个经常右键点击查看源代码,就能发现的。
      

  4.   

    3楼的帅哥,我自然知道webBrower是要拿来网页代码,然后解析出来的,如果GetElementByID可以的话
    自然下面一句就可以了w_lms_content.GetElementById("sec_timer_0").InnerText问题是这一句没用,因为跨域了
      

  5.   

    w_lms_content.GetElementById("sec_timer_0")得到的是否null?
      

  6.   

    先确认得到了对象没有,如果得到了,就是InnerText属性不对!
      

  7.   

    解析框架中的url再获取对应的html进行处理。
      

  8.   

    先确认得到了对象没有,如果得到了,就是InnerText属性不对!
    w_lms_content.GetElementById("sec_timer_0")得到的是null还是,真的能获取,如果能获取,就说明不存在你说的跨域安全问题。
      

  9.   

    回11楼
    我这样说吧,w_lms_content载入的页面的domain有可能是www.uestcedu.com,也可能是hz.uestcedu.com,因此前一种情况能得到这个计时的时间,而后一种情况,得到的_lms_content.GetElementById("sec_timer_0")为null
    很明显是域不同引起的
      

  10.   

    需要扩展WebBrowserSiteBase,实现IServiceProvider和IInternetZoneManager
      

  11.   

    不知道楼主的问题解决了没有?好想知道如何获取frame里面链接的htmlElement呢
      

  12.   

    w_lms_content.GetElementById("sec_timer_0").InnerText
    这一句不能跨越!你 的问题还有些没有说清楚