读书人

delphi 中webbrowser 屏蔽脚本异常提示

发布时间: 2013-04-20 19:43:01 作者: rapoo

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.

读书人网 >.NET

热点推荐