Edit He narrowed it down to 1 line,
HTML := wb.OleObject.Document.documentElement.innerHTML;
which consumes time ... how can it accelerate?
Using the following code, my application can hang for 1-2 seconds while it tries to access the HTML page of the page (Delphi XE).
function Button1Click(Sender : TObject); begin wb.navigate('http://10.0.0.154/stats'); // Use a timer to poll the page - dont wait and process app messages timer1.enabled := true; end; procedure Timer1Timer(Sender : TObject); var HTML : WideString; begin If GetHTML(HTML) = true then begin Timer1.enabled := false; { do something } end; end; function GetHTML(var HTML : WideString) : boolean; var Document : IHTMLDocument2; begin HTML := ''; Result := false; Document := wb.DOcument as IHTMLDocument2; If Assigned(Document) then begin try HTML := wb.OleObject.Document.documentElement.innerHTML; Result := true; except Result := false; end; end; end;
However, I noticed that my GetHTML method may take 1-2 seconds to return something, and it blocks the user interface. Looking at AQTime with Delphi XE, he says the method call is slow (1-2 seconds). This is sporadic, and I wonder if it fails when the page is still in medium load.
The page I am loading is an internal page full of javascript and 500k large, I cannot use OnDocumentComplete because it fires while the page is not ready yet, even if I do the ReadyState check, it still fires early.
Anyone who can shed some light if their faster way to access TWebbrowser HTML files?
source share