小弟在线程里动态创建了一个TWebBrowser控件,希望将它Navigate到指定的网页,然后从这个网页的源数据里取到一个地址,最后将TWebBrowser指向这个地址。
现在的情况是,从第一个网页抽取的地址没有问题,是正常的。但是再将TWebBrowser重指定这个地址时,就会显示"该页无法显示"。如果是不先指向第一个网页,而是直接指向第二个地址,则是正常的。这是什么原因?另外,我也试了另开一个TWebBrowser控件,即第一个WebBrowser控件指向第一个网页,页面加载完成后,用第二个WebBrowser控件指向第二个网页,这里,第二个网页同样显示“该页无法显示”。无解了,求教啊~~~

解决方案 »

  1.   

    用google做试验,没有发现你说的问题。以下是测试代码:
    uses
      ActiveX, MSHTML;procedure TForm1.FormCreate(Sender: TObject);
    begin
      wb1.Navigate('about:blank');
    end;procedure TForm1.FormShow(Sender: TObject);
    begin
      wb1.Navigate('www.google.cn');
    end;procedure TForm1.wb1DocumentComplete(Sender: TObject;
      const pDisp: IDispatch; var URL: OleVariant);
    var
      doc:IHTMLDocument2;
      all:IHTMLElementCollection;
      len:integer;
      item:OleVariant;
    begin
      doc:=wb1 .Document as IHTMLDocument2;
      all:=doc.Get_links;
      len:=all.length;
      if len > 0 then
      begin
        item:=all.item(0,varempty);
        if not wb1.Busy then
          wb1.Navigate(item.href);
      end;
    end;initialization
      OleInitialize(nil);finalization
      OleUninitialize;