我正在使用需要导航到仅1页的Twebbrowser组件构建应用程序,应用程序将在Windows自动启动中,因此第一次导航时可能没有任何互联网连接,所以我想检查页面的标题,如果它不正确,再次导航。像这样:
procedure TForm1.titlechange(Sender: TObject; const Text: WideString);
begin
if Text = 'Untitled Document' then
begin
StaticText1.Visible := False;
Timer4.Enabled := False;
end
else
webbrowser1.Navigate('http://website.com');
end;
我希望在该程序上有5秒计时器,如果导航成功并且标题是“无标题文档”,则应禁用计时器。
我该怎么做?
谢谢!
我回到我原来的请求,我实现了提议的解决方案,这只做有时工作,如果没有网络连接有时会有“导航到网页被取消”这触发OnDocumentComplete我认为LocationName功能在Twebbrowser本身的功能描述错误。
我的原始代码确实有用,我只需要一个计时器!请有人帮帮我。
答案 0 :(得分:3)
请尝试使用OnNavigatError
和OnDocumentComplete
事件,例如:
procedure TForm1.FormCreate(Sender: TObject);
begin
Timer4Timer(nil);
end;
procedure TForm1.Timer4Timer(Sender: TObject);
begin
Timer4.Enabled := False;
webbrowser1.Navigate('http://website.com');
end;
procedure TForm1.webbrowser1NavigateError(ASender: TObject; const pDisp: IDispatch; var URL: OleVariant; var Frame: OleVariant; var StatusCode: OleVariant; var Cancel: WordBool);
begin
Timer4.Enabled := True;
end;
procedure TForm1.webbrowser1DocumentComplete(ASender: TObject; const pDisp: IDispatch; var URL: OleVariant);
begin
if webbrowser1.LocationName = 'Untitled Document' then
begin
StaticText1.Visible := False;
end
else begin
Timer4.Enabled := True;
end;
end;