我在Delphi中使用TWebBrowser控件,填写一个表单页面(reg.php),进行提交.提交后,我进行了状态判断:
  while True do
  begin
    Application.ProcessMessages();
    WebBrowser.UpdateControlState;
    if WebBrowser.ReadyState = READYSTATE_COMPLETE then break;
  end;下面获取页面内容
  doc:= WebBrowser.Document as mshtml.IHTMLDocument2;
  sHTML := doc.body.innerHTML;这样获取到的仍然是表单页面(reg.php)的内容,而不提交后跳转的页面内容(success.php).不知这是怎么回事,有人碰到过吗?

解决方案 »

  1.   

    没下载完吗,在Ondocumentcomplete事件做的吗
      

  2.   

    不是,填写表单内容和提交都是在一个过程内做的.
    完整代码如下:
    procedure TfrmWin.BitBtn1Click(Sender: TObject);
    var
      ov : Olevariant;
      doc:mshtml.IHTMLDocument2;
      sHTML : String;
    begin
      ov := WebBrowser.OleObject.document.all.item('UserName',0);      
      ov.value := 'xxz2010';
      ov := WebBrowser.OleObject.document.all.item('Password1',0);   
      ov.value := 's123s123';  
      ov := WebBrowser.OleObject.document.all.item('Password2',0);   
      ov.value := 's123s123';
      WebBrowser.oleobject.document.Forms.Item(0, 0).submit;
      //略去一些项目  while True do
      begin
        Application.ProcessMessages();
        WebBrowser.UpdateControlState;
        if WebBrowser.ReadyState = READYSTATE_COMPLETE then break;
      end;  doc:= WebBrowser.Document as mshtml.IHTMLDocument2;
      sHTML := doc.body.innerHTML;
    end;
      

  3.   

    那不行,必须保证document完全加载,其实在Ondocumentcomplete事件中也不能保证页面已经加载,网上好像有个办法,你查查吧
      

  4.   

    或者你用idhttp提交吧,那个能返回你要的结果
      

  5.   

      while True do
      begin
      Application.ProcessMessages();
      WebBrowser.UpdateControlState;
      if WebBrowser.ReadyState = READYSTATE_COMPLETE then break;
      end;这个循环处理不就是直到下载完成吗?