首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

delphi 中webbrowser 屏蔽脚本异常提示

2013-04-20 
delphi 中webbrowser 屏蔽脚本错误提示delphi 用 webbrowser 登录 百度新闻等网站是会报错 脚本错误,但是

delphi 中webbrowser 屏蔽脚本错误提示
delphi 用 webbrowser 登录 百度新闻等网站是会报错 脚本错误,但是对浏览网站没有什么影响,
我尝试用 webbrowser.silent:=true; 屏蔽提示框,但是这样有一个弊端,就是很有可能将其他的可用提示框屏蔽掉,例如 路由器网关的登陆界面。
网上搜了一下有人说只屏蔽 脚本报错会很烦但是没有说明办法,又没偶大神会通过代码只屏蔽脚本错误而不屏蔽其他提示框?? webbrowser delphi 脚本 提示框
[解决办法]
以下代码可以屏蔽js提示.
备注: JS提示的屏蔽会带来其他问题, 比如屏蔽询问JS通行的窗口会导致界面使用问题

unit Unit11;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, OleCtrls, SHDocVw{, ActiveX, ShellAPI};

type
  TForm11 = class(TForm)
    wb1: TWebBrowser;
    edtURL: TEdit;
    procedure edtURLKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure wb1NewWindow2(ASender: TObject; var ppDisp: IDispatch;
      var Cancel: WordBool);
    procedure wb1NavigateComplete2(ASender: TObject; const pDisp: IDispatch;
      var URL: OleVariant);
    procedure wb1StatusTextChange(ASender: TObject; const Text: WideString);
    procedure wb1BeforeNavigate2(ASender: TObject; const pDisp: IDispatch;
      var URL, Flags, TargetFrameName, PostData, Headers: OleVariant;
      var Cancel: WordBool);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  private
    { Private declarations }
    vStatusText: WideString;
    vUpdating: Boolean;
  public
    { Public declarations }
  end;

var
  Form11: TForm11;

implementation

{$R *.dfm}

procedure TForm11.edtURLKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = 13 then
    wb1.Navigate(edtURL.Text);
end;

procedure TForm11.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  wb1.Navigate('about:blank;');
end;

procedure TForm11.wb1BeforeNavigate2(ASender: TObject; const pDisp: IDispatch;
  var URL, Flags, TargetFrameName, PostData, Headers: OleVariant;
  var Cancel: WordBool);
begin

  Cancel := vUpdating;
  Cancel := (URL = vStatusText);
end;

procedure TForm11.wb1NavigateComplete2(ASender: TObject; const pDisp: IDispatch;
  var URL: OleVariant);
begin
  vUpdating := False;
end;

procedure TForm11.wb1NewWindow2(ASender: TObject; var ppDisp: IDispatch;
  var Cancel: WordBool);
begin
  vUpdating := True;
end;


procedure TForm11.wb1StatusTextChange(ASender: TObject; const Text: WideString);
begin
  vStatusText := Text;
end;

end.

热点排行