各位,我又碰到一问题:在webbrowser中,如果当前页面有一个javascript的window.close()连接,
则点这个连接后出现OLE错误,那位大哥告诉我怎么处理这个问题?

解决方案 »

  1.   

    procedure ApplicationMessage(var Msg: TMsg; var Handled: Boolean);
    在form create时
    Application.OnMessage := ApplicationMessage;function tfrmhtmlbrowser.GetVisibleWebBrowser: TEmbeddedWb;
    var
      wb: Tembeddedwb;
      tmp: TControl;
    begin
      tmp := pagecontrol.ActivePage.Controls[0];
       wb := (tmp as Tembeddedwb);
       Result := wb;
    end; //End GetVisibleWebbrowserprocedure tfrmhtmlbrowser.ApplicationMessage(var Msg: TMsg; var Handled: Boolean);
    var
      wb: tembeddedwb;
    begin
      WB := GetVisibleWebBrowser; //取当前webbrowser控件
      if (Msg.message = WM_CLOSE) and (Msg.hwnd = Wb.Handle) then
      begin
        closebtnclick(Self);//关闭webbrowser后,把相应的ttabsheet删除
      end
      else
        inherited;
    end;
      

  2.   

    procedure ApplicationMessage(var Msg: TMsg; var Handled: Boolean);
    在form create时
    Application.OnMessage := ApplicationMessage;function tfrmhtmlbrowser.GetVisibleWebBrowser: TEmbeddedWb;
    var
      wb: Tembeddedwb;
      tmp: TControl;
    begin
      tmp := pagecontrol.ActivePage.Controls[0];
       wb := (tmp as Tembeddedwb);
       Result := wb;
    end; //End GetVisibleWebbrowserprocedure tfrmhtmlbrowser.ApplicationMessage(var Msg: TMsg; var Handled: Boolean);
    var
      wb: tembeddedwb;
    begin
      WB := GetVisibleWebBrowser; //取当前webbrowser控件
      if (Msg.message = WM_CLOSE) and (Msg.hwnd = Wb.Handle) then
      begin
        closebtnclick(Self);//关闭webbrowser后,把相应的ttabsheet删除
      end
      else
        inherited;
    end;