webbrowser中如何让前一个动作完成后才进行下一个动作?

时间:2021-11-07 16:58:56
webbrowser中如何让前一个动作完成后才进行下一个动作?

procedure TForm1.Button2Click(Sender: TObject);
var
  vDocument: IHTMLDocument2;
begin

while WebBrowser1.ReadyState <READYSTATE_COMPLETE do
Application.ProcessMessages;

  vDocument := WebBrowser1.Document as IHTMLDocument2;
  if not Assigned(vDocument) then Exit;
  vDocument.parentWindow.execScript(
'function $(id)'#13#10 +
'{'#13#10 +
'    return document.getElementById(id);'#13#10 +
'}'#13#10 +
''#13#10 +
'$("verticalName").value="Products";'#13#10 +
'$("btnG").click();'#13#10,
    'javascript');
end;


procedure TForm1.Button3Click(Sender: TObject);
var
  vDocument: IHTMLDocument2;
begin

while WebBrowser1.ReadyState <READYSTATE_COMPLETE do
Application.ProcessMessages;

  vDocument := WebBrowser1.Document as IHTMLDocument2;
  if not Assigned(vDocument) then Exit;
  vDocument.parentWindow.execScript(
'function $(id)'#13#10 +
'{'#13#10 +
'    return document.getElementById(id);'#13#10 +
'}'#13#10 +
''#13#10 +
'$("offer.title").value="MP3 PLAYER";'#13#10 +


'$("offer.emailAddressb").checked=true;'#13#10,
    'javascript');
end;

procedure TForm1.Button4Click(Sender: TObject);
var
  vDocument: IHTMLDocument2;
begin

while WebBrowser1.ReadyState <READYSTATE_COMPLETE do
Application.ProcessMessages;

  vDocument := WebBrowser1.Document as IHTMLDocument2;
  if not Assigned(vDocument) then Exit;
  vDocument.parentWindow.execScript(
'function $(id)'#13#10 +
'{'#13#10 +
'    return document.getElementById(id);'#13#10 +
'}'#13#10 +
''#13#10 +
'$("saveAsPublished").click();'#13#10,
    'javascript');

end;




如何让这三步  放在一个事件里面 执行,,,在这里面,,每下一个步骤里面都得等上一步完成后才能进行

5 个解决方案

#1


来个人看看啊..............

#2


你把三个动作顺序写到一个函数里,执行起来,不就是先完成一个再完成另一个了嘛

#3


delphi我很菜,
不过我用VB写过类似的程序,
建议你定义全局变量,用于保存操作标记,这样就可以实现你的要求.

例如:
全局部分:
dim sFlag as integer
const s_1 as integer=1
const s_2 as integer=2
...

过程部分:
select case sFlag
       case s_1
            ...
            sflag=s_2
       case s_2
            sflag=s_3
end select
       

#4


可以实现,只是给分太少没有回答的动力。

#5


vb的看不懂

#1


来个人看看啊..............

#2


你把三个动作顺序写到一个函数里,执行起来,不就是先完成一个再完成另一个了嘛

#3


delphi我很菜,
不过我用VB写过类似的程序,
建议你定义全局变量,用于保存操作标记,这样就可以实现你的要求.

例如:
全局部分:
dim sFlag as integer
const s_1 as integer=1
const s_2 as integer=2
...

过程部分:
select case sFlag
       case s_1
            ...
            sflag=s_2
       case s_2
            sflag=s_3
end select
       

#4


可以实现,只是给分太少没有回答的动力。

#5


vb的看不懂