Редактировать
Сузили до этой 1 строки,
HTML := wb.OleObject.Document.documentElement.innerHTML;
который тратит время ... как это можно ускорить?
Используя следующий код, мое приложение может зависнуть на 1-2 секунды, пока оно пытается получить доступ к HTML-странице (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;
Однако я заметил, что в моем методе GetHTML может потребоваться 1-2 секунды, чтобы вернуть что-то, и это блокирует пользовательский интерфейс. Глядя на AQTime с Delphi XE, он говорит, что вызов метода медленный (1-2 секунды). Это споратично, и мне интересно, если это не удается, когда страница все еще находится в середине загрузки.
Страница, которую я загружаю, является внутренней страницей, полной javascript и размером 500 КБ, я не могу использовать OnDocumentComplete, потому что она срабатывает еще до того, как страница готова, даже если я проверяю ReadyState, он все еще срабатывает рано.
Кто-нибудь может пролить свет на то, если их более быстрым способом я смогу получить доступ к HTML из TWebbrowser?