有个网页在我本地硬盘上,我通过Webbrowser1调用本地地址(like:c:\adfa\adfasd.html)去读取并且生成对象,发现不能获取frame标签中的src属性值。注:本地仅有这个frame文件,没有别的html。希望大家帮忙啊,分不够可以再加。

解决方案 »

  1.   

    实在不明白你的意思,看起来不是WebBrowser的问题,估计是你的网页的问题,建议在IE下调试成功再试
      

  2.   

    可到网上,比如google搜索更多Webbrowser1的知识来参考
      

  3.   

    网页没问题,html代码:
                <html>
                <head>
                <title>some title</title>
                <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
                <meta name="keywords" content="some keywords">
                </head>
                <FRAMESET rows="*,73" name="o_frame" framespacing="0" frameborder="NO" border="0">
                <FRAME NAME="t_frame" SRC="http://www.host.com/url">
                <frameset cols="*,0" frameborder="NO" border="0" framespacing="0" SCROLLING="NO" noresize>             <FRAME NAME="s_frame" SRC="some_local_url" SCROLLING="NO" noresize>
                             <FRAME src="http://www.host.com/login_url" name="l_frame">
                </frameset>
                </FRAMESET>
                <noframes>
                <body>
                <p>some text</p>
                <p>some text</p>            </body>
                </noframes>
                </html>试问,如何取出<FRAME NAME="t_frame" SRC="http://www.host.com/url">中的http://www.host.com/url??别用正则表达式和字符串search函数啊~~~ 用webbrowser控件,取出来某个对象的属性。再次表示感谢!!
      

  4.   

    http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q297950
      

  5.   

    楼上的地址非常有帮助,参考VC的做法,在Delphi中可以这样:
    通过TWebBrowser找到IHTMLDocument2接口,然后获取其中的ALL集合对象,然后枚举该集合,如果在该集合中的某个元素支持IHTMLFrameBase接口,即可以通过get_src()方法取得其Src。
      

  6.   

    谢谢你们但是那个vc代码对我有些难,中间有各类型转换吧?
    IHTMLDocument2 webbrowser htmlframebase这三个类型,相互之间的关系,我有点晕~
      

  7.   

    参考如下代码uses MSHTML;procedure TForm1.FormCreate(Sender: TObject);
    begin
      WebBrowser1.Navigate('C:\temp\temp.htm');
    end;procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
      const pDisp: IDispatch; var URL: OleVariant);
    var
      vHTMLDocument2: IHTMLDocument2;
      vHTMLElementCollection: IHTMLElementCollection;
      vHTMLElement: IHTMLElement;
      I: Integer;
    begin
      if not Assigned(WebBrowser1.Document) then Exit;
      vHTMLDocument2 := WebBrowser1.Document as IHTMLDocument2;
      vHTMLElementCollection := vHTMLDocument2.all;
      for I := 0 to vHTMLElementCollection.length - 1 do
      begin
        vHTMLElement := vHTMLElementCollection.item(I, I) as IHTMLElement;
        if SameText('FRAME', vHTMLElement.tagName) then
          Memo1.Lines.Add((vHTMLElement as IHTMLFrameBase).src)
      end;
    end;
      

  8.   

    成功了,在我批量处理文件的时候,循环运行WebBrowser1.Navigate('C:\temp\temp.htm');这个语句不响应WebBrowser1DocumentComplete这个函数,我再循环内需要发一个什么样的消息啊?马上要成功了,请大家给点提示。
      

  9.   

    如果中间来一个showmessage的话,就能响应WebBrowser1DocumentComplete我是不是需要一个什么程序中断一下?小弟delphi比较初,大家别介意
      

  10.   

    把showmessage
    换成Application.ProcessMessages;试试