我想判断WebBrowser是否完全打开网页,并且要知道网页是否异常(如:无法显示,网页已不存在..等这类) 

解决方案 »

  1.   


    可以用下面的方法判断网页是否正常,不知还有没有其它更好的方法
    procedure TForm1.WebBrowser1StatusTextChange(Sender: TObject;
      const Text: WideString);
    begin
      if Text = '完成' then
        ShowMessage('ok');
    end;
      

  2.   

    在网上还找到了下面的方法,你也可以试试  procedure   TForm1.WebBrowser1DocumentComplete(ASender:   TObject;   
          const   pDisp:   IDispatch;   var   URL:   OleVariant);   
      var   
          d:Variant;   
      begin   
              d:=WebBrowser1.Document;   
              Edit1.Text   :=   WebBrowser1.OleObject.Document.title;   
              if((Edit1.Text='没有可以显示的页面')   or   (Edit1.Text='HTTP   404   未找到'))   then   
              begin   
                        d.Write('<b>出错了!</b>');   
                        d.Close;   
              end;   
      end;
      

  3.   

    你把delphi自带的那个TWebBrowser卸载掉,然后Component->Install ActiveX Control,重新安装这个组件,这样的话就有OnNavigateError事件了
      

  4.   

    你把delphi自带的那个TWebBrowser卸载掉,然后Component->Install ActiveX Control,重新安装这个组件,这样的话就有OnNavigateError事件了
      

  5.   

    判断顶层框架,来判断是否加载完成
    procedure TForm.WebBrowser1DocumentComplete(ASender: TObject;
      const pDisp: IDispatch; var URL: OleVariant);
    var
      hr: HRESULT;
      pUnkBrowser,pUnkDisp: IUnknown;
    begin
      hr := (WebBrowser1.Application as IWebBrowser2).QueryInterface(IID_IUnknown,pUnkBrowser);
      if Succeeded(hr) then
      begin
        hr := pDisp.QueryInterface(IID_IUnknown,pUnkDisp);
        if Succeeded(hr) then
        begin
          if pUnkBrowser = pUnkDisp then //如果是顶层框架完成,则表示完成
          begin
            //加载完成了。
          end;      
        end;
      end;
    end;