Главная » Delphi » Интернет и сети » Internet Explorer and blocking Javascript

Internet Explorer and blocking Javascript

18:18
if you are using TWebBrowser, you need to override the invoke method for
TOleControl.Check the code Below:

interface
 
TOleControl2 = class(TOleControl, IDispatch)
private
  FScript: boolean;
protected
  function IDispatch.Invoke = Invoke;
  function Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer;
    Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HResult;
    stdcall;
public
  constructor Create(AOwner: TComponent); override;
published
  property ScriptEnabled: boolean read FScript write FScript;
end;
 
implementation
 
 
{ TOleControl2 }
 
constructor TOleControl2.Create(AOwner: TComponent);
begin
  inherited;
  FScript := true;
end;
 
 
 
function TOleControl2.Invoke(DispID: Integer; const IID: TGUID; LocaleID:
  Integer; Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer):
  HResult;
const
  DISPID_AMBIENT_DLCONTROL = -5512;
  DLCTL_DLIMAGES = $00000010;
  DLCTL_NO_SCRIPTS = $00000080;
  DLCTL_NO_JAVA = $00000100;
  DLCTL_NO_RUNACTIVEXCTLS = $00000200;
  DLCTL_NO_DLACTIVEXCTLS = $00000400;
  DLCTL_DOWNLOADONLY = $00000800;
 
var
  F: TFont;
begin
  if (Flags and DISPATCH_PROPERTYGET <> 0) and (VarResult <> nil) then
  begin
    Result := S_OK;
    case DispID of
      DISPID_AMBIENT_BACKCOLOR:
        PVariant(VarResult)^ := Color;
 
      DISPID_AMBIENT_DISPLAYNAME:
        PVariant(VarResult)^ := StringToVarOleStr(Name);
 
      DISPID_AMBIENT_FONT:
        begin
          if (Parent <> nil) and ParentFont then
            F := TOleControlHack(Parent).Font
          else
            F := Font;
          PVariant(VarResult)^ := FontToOleFont(F);
        end;
 
      DISPID_AMBIENT_FORECOLOR:
        PVariant(VarResult)^ := Font.Color;
 
      DISPID_AMBIENT_LOCALEID:
        PVariant(VarResult)^ := Integer(GetUserDefaultLCID);
 
      DISPID_AMBIENT_MESSAGEREFLECT:
        PVariant(VarResult)^ := True;
 
      DISPID_AMBIENT_USERMODE:
        PVariant(VarResult)^ := not (csDesigning in ComponentState);
 
      DISPID_AMBIENT_UIDEAD:
        PVariant(VarResult)^ := csDesigning in ComponentState;
 
      DISPID_AMBIENT_SHOWGRABHANDLES:
        PVariant(VarResult)^ := False;
 
      DISPID_AMBIENT_SHOWHATCHING:
        PVariant(VarResult)^ := False;
 
      DISPID_AMBIENT_SUPPORTSMNEMONICS:
        PVariant(VarResult)^ := True;
 
      DISPID_AMBIENT_DLCONTROL:
        if not (FScript) then
        begin
          PVariant(VarResult)^ := Integer(DLCTL_NO_JAVA or
            DLCTL_NO_SCRIPTS or DLCTL_DLIMAGES);
//PVariant(VarResult)^ := Integer(DLCTL_DOWNLOADONLY or
          DLCTL_NO_JAVA or DLCTL_NO_SCRIPTS or DLCTL_NO_DLACTIVEXCTLS or
            DLCTL_NO_RUNACTIVEXCTLS or 0);
end;
DISPID_AMBIENT_AUTOCLIP:
PVariant(VarResult)^ := True;
else
  Result := DISP_E_MEMBERNOTFOUND;
end;
end else
  Result := DISP_E_MEMBERNOTFOUND;
end;





Hope this helps

Fitim