使用webbrowser打开网页,网页中包含框架, 原来是想获得某个指定框架内的网页代码,如果指定框架打开正常可以获得网页代码,但是如果这个框架无法打开,就打开了res://c:\windows\system32\shdoclc.dll\navcancl.htm,在获取这个框架的网页代码时,获得的代码为空, 所以想先判断一下指定框架打开的地址是http://地址还是res://c:地址,请教能否获得指定frames所打开的实际地址,或如何判断网页内指定框架是否打开? 

解决方案 »

  1.   

    判断IDispatch对象是否等于当前的webbrowser中的IDispatch对象即可。40分有点少啊?
      

  2.   

    哦,是我没有说明白,不是判断网页是否完全打开,是如何判断一个子框架是否正常打开,比如网页内有两个子框架,一个TOP,一个MAIN,我想获得MAIN内的网页代码,MAIN子框架内的网页正常打开时,可以获得MAIN子框架内的网页代码,但如果MAIN内的网页不能打开(无法显示),获得的MAIN子框架的网页代码就是空,(拒绝访问),不能获得MAIN子框架内这时"无法显示"的网页代码.请教能否获得指定MAIN子框架所打开的实际地址,或如何判断网页内指定MAIN子框架是否正常打开?
      

  3.   

    既然你比较慷慨的结贴,我就把我会的给你说下吧:网页中存在iframe时判断页面是否下载结束      
    procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
       const pDisp: IDispatch; var URL: OleVariant);
    begin
        if WebBrowser1.Application = pDisp then showmessage('某个页面下载完毕')
    end; 
       说明一下,每个iframe下载完毕都会触发DocumentComplete事件,所以一个页面在真正下载完毕前可能被触发多次