Einzelnen Beitrag anzeigen

win568

Registriert seit: 8. Sep 2008
134 Beiträge
 
#2

AW: TWebbrowser and Javascript

  Alt 20. Dez 2016, 12:04
Hi

Wenn du den EmbeddedWB verwendest, kannst du per Doc2.scripts.length abfragen, wieviele Scripte geladen wurden bzw.
mit folgendem Code warten, bis alle geladen sind:

procedure WaitForScriptLoaded;
var
lComplete: Boolean;
lScript: IHTMLScriptElement;
begin
// Warte bis die Scripts geladen wurden
lComplete := FALSE;
while not lComplete do begin
Forms.Application.ProcessMessages;
if Doc2.scripts.length >= 1 then begin
lScript := Doc2.scripts.Item(0,0) as IHTMLScriptElement;
if (lScript.readyState = 'complete') or
(lScript.readyState = 'loaded') then begin
lComplete := True;
end;
end;
Sleep(100);
end;
end;

Wenn du keinen EmbeddedWB hast, musst du erst das Document ermitteln.
Die Abfrage kannst du um OnDocumentComplete machen. Hier solltest du folgendes machen:

procedure Form.DoOnEWBDocumentComplete(ASender: TObject; const pDisp: IDispatch;
var URL: OleVariant);
var
lCurWebbrowser: IWebBrowser;
lTopWebbrowser: IWebBrowser;
begin
try
// Wurde das Document auch wirklich vollständig geladen ??
// DocumentComplete wird auch für die eingebetteten Frames aufgerufen !!!
lCurWebbrowser := pDisp as IWebBrowser;
lTopWebBrowser := (ASender as TWB).DefaultInterface;
// Erst wenn das Dokument komplett geladen wurde, dann
// dürfen die Aktionen durchgeführt werden
if (lCurWebbrowser = lTopWebBrowser) and
(FWB.ReadyState = READYSTATE_COMPLETE) then begin

-> Hier kannst du dann warten
  Mit Zitat antworten Zitat