編集 この1行に絞り込み、
HTML := wb.OleObject.Document.documentElement.innerHTML;
これは時間を消費します...どうすればスピードアップできますか?
次のコードを使用すると、ページ (Delphi XE) の HTML にアクセスしようとしているときに、アプリケーションが 1 ~ 2 秒間ハングすることがあります。
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;
ただし、GetHTML メソッドで何かを返すのに 1 ~ 2 秒かかり、UI がロックされることに気付きました。Delphi XE で AQTime を見ると、メソッド呼び出しが遅い (1 ~ 2 秒) と表示されます。散発的で、ページがまだロードされているときに失敗するのではないかと思います。
私が読み込んでいるページは社内ページであり、javascript でいっぱいで 500k の大きさです。ページの準備が整う前に起動するため、OnDocumentComplete を使用できません。
TWebbrowser の HTML にアクセスできる高速な方法があれば、誰でも光を当てることができますか?