我在这里搜索,但没有成功或任何可接受的答案。
我有更大的应用程序,它使用的是TEmbeddedWB。让我们说我的代码是这样的:
// here is some other code where I am working with EmbeddedWB1
EmbeddedWB1.Navigate2('http://www.stackoverflow.com');
while EmbeddedWB1.ReadyState <> READYSTATE_COMPLETE do
begin
EmbeddedWB1.Stop;
Application.ProcessMessages;
end;
EmbeddedWB1.Navigate2('http://www.google.com');
此代码卡在该循环中。
调试时,EmbeddedWB1.ReadyState = READYSTATE_LOADING
。
有人可以告诉我,如何定义停止加载页面,然后继续进行下一次导航?
非常感谢。
PS:没有那个循环,它可以正常加载另一个页面,f.e。 google.com。但是在加载另一个页面之前我真的需要在READYSTATE_COMPLETE
中使用它。
答案 0 :(得分:1)
它没有退出循环,因为你明确告诉它不要这样做,直到ReadyState
为READYSTATE_COMPLETE
,然后调用Stop
以便它永远不会达到{{1} }}。
遵循逻辑:
ReadyState
的行显示“保持循环直到ReadyState为READYSTATE_COMPLETE”。{ 1 }
的行显示“停止加载页面”,这意味着{ 2 }
可以从不成为ReadyState
// This line says "Stay in loop until we reach READYSTATE_COMPLETE while EmbeddedWB1.ReadyState READYSTATE_COMPLETE do { 1 } begin EmbeddedWB1.Stop; { 2 } Application.ProcessMessages; end;
你故意阻止你的循环退出。
如果你想实际停止加载页面并退出循环,请输入一个计数器或计时器,并在循环中添加一个条件,以便在条件满足时退出:
READYSTATE_COMPLETE