如何取得frame嵌套frame的HTML的原代码?并写入Memo1上.

解决方案 »

  1.   

    如果只要查找webbrowser网页显示的文字内容,应该如何写代码呢?
      

  2.   

    uses mshtml;procedure TForm1.Button1Click(Sender: TObject);
    begin
      memo1.Text:=IHtmlDocument2(WebBrowser1.Document).Body.outerText;
    end;
      

  3.   

    如果要取HTML的原代码:memo1.Text:=IHtmlDocument2(WebBrowser1.Document).Body.outerHTML;
      

  4.   

    上述方法只能取得<BODY>页的内容,对frame及嵌套frame的HTML的还是无法取得其全部源代码
      

  5.   

    uses MSHTML;procedure TForm1.Button1Click(Sender: TObject);
    var
      doc,frm: IHTMLDocument2;
      iw: IWebbrowser2;
      i: integer;
    begin
      doc := WebBrowser1.Document as IHTMLDocument2;
      for i := 0 to doc.frames.length-1 do
      begin
        iw := GetFrame(i);
        frm := iw.Document as IHTMLDocument2;
        Memo1.Lines.Add('============== Frame ' + IntToStr(i) +' ==================');
        Memo1.Lines.Add(frm.body.outerHTML);
      end;
    end;function TForm1.GetFrame(FrameNo: Integer): IWebbrowser2;
    var
      OleContainer: IOleContainer;
      enum: IEnumUnknown;
      unk: IUnknown;
      Fetched: PLongint;
    begin
      while Webbrowser1.ReadyState <> READYSTATE_COMPLETE do
        Application.ProcessMessages;
      if Assigned(Webbrowser1.document) then
      begin
        Fetched := nil;
        OleContainer := Webbrowser1.Document as IOleContainer;
        OleContainer.EnumObjects(OLECONTF_EMBEDDINGS, enum);
        Enum.Skip(FrameNo);
        Enum.Next(OLECONTF_EMBEDDINGS, Unk, Fetched);
        Result := Unk as IWebbrowser2;
      end
      else
        Result := nil;
    end;
      

  6.   

    谢谢 ailibuli(愛理不理) :按你的办法搞定.结贴.
      

  7.   

    要是想取得webbrowser  frame 中 frame 嵌套 frame(b1,b2,c1,c2) HTML的原代码? 三重关系 
              关系图
                a
              /   \
             b     c
            / \   / \
           b1 b2 c1 c2
    那我应该怎样做,最近为很头痛,是因为看过很多帖,但是没有找到方法,希望各位能教我一下,谢了