怎样使webbrowser控件不跳出脚本错误的对话框!(29分)

  • 主题发起人 主题发起人 zyy04
  • 开始时间 开始时间
Z

zyy04

Unregistered / Unconfirmed
GUEST, unregistred user!
如题。
假设该处错误不可避免。
如果能用程序控制使该对话框自动关闭,亦可!
 
江湖救急,希望各位大虾能大力援助!!!
 
如果网页中含有SCRIPT(JS/VS)就会载入不全或需要的对象载入不全,就会出脚本错误。
一般情况是不可避免的,但是应该有捕获它跳出并杀之的办法,可惜我不知道。
 
问题是如果用IE浏览该叶面无此问题,只有用webbrowser浏览时,才会跳出
是否继续运行脚本得对话框。
 
原应是这样的,我需点击一个含muti frames得页中的一个按钮,但不会:-(
于是我就直接用webbrowser1.navigate('脚本名+?参数');
但问题来了,如果我是用webbrowser则跳出一个缺少脚本对象的对话框,我不点yes,
就没法继续;而当我用IE,手动输入该url,却没这问题!!!
如果各位能解决372267的问题,这个也可算解决了!
 
可使用 Timer 或在頁面下載完畢後使用下列語法來關閉視窗。
PS:為繁體系統,簡體系統請自行修正文字。

procedure TForm1.CloseIEpops;
var
buf:pchar;
s:string;

ph:HWND;
begin
// 自動關閉 IE Script Error 視窗
GetMem(buf,201);
try
// Close Script error window
repeat

ph:=FindWindow(nil,'Internet Explorer Script 錯誤');

if ph<>0 then
begin
//GetWindowText(ph,buf,200);
GetClassName(ph,buf,200);

s:=string(buf);

if (pos('Internet Explorer',s)>0) and (pos('TridentDlgFrame',s)>0) then
begin
PostMessage(ph,WM_Close,0,0);

// Icon Animate
RzTrayIcon1.IconIndex:=2;
OldCar:=TimeCar;
end else
break;
end;
until ph=0;
finally
FreeMem(buf);
end;
end;

 
修改注册表将其中的禁止脚本调试设置成yes
 
上面的两位,对不起,我表达可能不太清楚,
我不是要关闭该错误对话框,而是要点击其对话框中的yes按钮.
 
让我想想
 
“Internet选项/高级/显示每个脚本错误的通知”
再有,TWebBrowser的Silent设为true。
也许可以。
 
javascript or vbscript can do like that.
 
控制错误提示我不知道,但如果你只是想自动输入数据我到可以实现,代码如下:
FUNCTION TTRADE_FORM.SAFE_WEBLOGON(Sender: TObject):BOOLEAN;
var
doc: IHTMLDocument2;
all: IHTMLElementCollection;
item: OleVariant;
BEGIN
result:=false;
IF web.ReadyState=readystate_complete THEN
begin
try
doc:=web.Document as IHtmlDocument2;
all:=doc.all;

item:=all.item('USERNAME',0);//‘USERNAME’是一个输入框的名字
ITEM.VALUE:=‘MYUSERNAME’;
item:=all.item('PASSWORD',0);//‘PASSWORD’是一个密码输入框的名字
ITEM.VALUE:=‘MYPASSWORD’;
item:=doc.forms.item('logon',emptyparam);//‘LOGON’是表单的名字
item.submit;
while web.ReadyState<>readystate_complete do//检查WEB状态是否已经完成
begin
application.ProcessMessages;//让程序继续处理其他事件
end;
//检查返回的网页中是否有‘登陆成功’的字符,如果有表示登陆成功
if pos('登录成功',Web.OleObject.document.documentelement.outerhtml)<>0 then
result:=true
except
result:=false;
end;
END;
end;
 
to qlj:
您理解错了!
 
太久了,结束了
 
qlj:请问使用下面方法提交网页可是有的网页的from并没有表单的名字,该如何提交

item:=doc.forms.item('logon',emptyparam);//‘LOGON’是表单的名字
item.submit;
 
你是如何关闭“脚本提示”?
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部