如何让所有网页的内容都在webbrowser上显示,而不调用IE显示?

解决方案 »

  1.   

    在NewWindow2事件中写入代码:Cancel := True;
      

  2.   

    要在同一个WebBrowser里显示,可以这样:
    再放一个小的WebBrowser2,设置它在WebBrowser1下面(设置Visible为False好象无效),
    // 在WebBrowser1的OnNewWindow2事件中:
    procedure TForm1.WebBrowser1NewWindow2(Sender: TObject;
      var ppDisp: IDispatch; var Cancel: WordBool);
    begin
      ppDisp := WebBrowser2.Application;  // 新的窗口先指向WebBrowser2
    end;
    // 在WebBrowser2的OnBeforeNavigate2事件中:
    procedure TForm1.WebBrowser2BeforeNavigate2(Sender: TObject;
      const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
      Headers: OleVariant; var Cancel: WordBool);
    begin
      WebBrowser1.Navigate(string(URL));  // 再指回WebBrowser1
      Cancel := True;
    end;